大家好,
我現在P1.aspx.cs的Gridview已經從資料庫中撈出資料了,並且在P1中使用RowCommend的CommendName取得CommandArgument的參數並且Response.Redirect到P2.aspx的新Gridview中。
現在我想要在P2.aspx.cs中做另外一個RowCommend的編輯功能,但是卻不知道如何用QueryString拿到值後,要把它塞進P2的gridview某個欄位的CommandArgument,
有想過直接繫結上去,但卻跳出數據綁定:沒有包含名為'該欄位名稱'的屬性錯誤。
想請問一下如果我該如何在前端繫結就帶入QueryString的值,或是版上高手有什麼其他更正確的作法嗎?
謝謝
以下為我P2.aspx的程式碼:
<asp:GridView ID="gv1" runat="server" OnRowCommand="gv1_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Edit" runat="server" Text="Edit" CommandName="Edit" CommandArgument='<%# Eval("Number")%>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
P2.aspx.cs:
protected void gv1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Edit")
{
int Number = Convert.ToInt32(e.CommandArgument);
}
}
我就直接用程式碼回應你了,請參考EditIt這段,在相關的Row內必須要置入HiddenField的Control,前面用 GridViewRow tr = (GridViewRow)(((Button)e.CommandSource).NamingContainer); 去帶入該Row,才能用FindControl去把資料帶出來,不論要幾個都可以:
protected void Adpe_RowCommand(object sender, GridViewCommandEventArgs e)
{
GridViewRow tr = (GridViewRow)(((Button)e.CommandSource).NamingContainer);
GridView gv = adipt_gv;
DataTable dt01 = new DataTable();
if (e.CommandName == "EditIt")
{
int d_id = 0;
if(int.TryParse(((HiddenField)tr.FindControl("Data")).Value, out d_id))
{
EditIt(d_id);
}
else
{
Dialog("訊息", d_id+"無資料可編輯。");
return;
}
}
if (e.CommandName == "Batch_Del")
{
dt01 = adpitsDtb(gv);
DataTable v2 = new DataTable();
DataRow[] dr = dt01.Select("sel1 = false");
if (dr.Length == 0)
{
gv.DataSource = null;
gv.DataBind();
Dialog("訊息", "全部資料刪除。");
amt_s.Text = "0";
return;
}
v2 = dr.CopyToDataTable();
if (v2.Rows.Count == 0)
{
Dialog("訊息","無任何選取,無法批次刪除。");
return;
}
gv.DataSource = v2;
gv.DataBind();
}
}
kw哥!!
想問一下
if(int.TryParse(((HiddenField)tr.FindControl("Data")).Value, out d_id))
這邊的(HiddenField)tr是什麼意思QQ
喔喔我好像有點懂了,我來試試看!
這樣子做。
<asp:GridView ID="gv1" runat="server" OnRowCommand="gv1_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Edit" runat="server" Text="Edit" CommandName="Edit" CommandArgument='<%# Eval("Number")%>' />
<asp:HiddenField ID="Data" Value='<%# Eval("Number") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>