如何将项目模板文本框从gridview保存到数据库
问题描述:
我有一个gridview,其中包含2个项目模板1-复选框2-文本框,如下所示:
I have a gridview that contains 2 item template 1-checkbox 2-textbox like this:
<asp:GridView ID="Warehouse_gv" runat="server" AllowPaging="True" align="center"
AllowSorting="True" AutoGenerateColumns="False" DataSourceID="Warehouse_gv_SqlDS"
onselectedindexchanged="Warehouse_gv_SelectedIndexChanged" Width="230px" PageSize="700">
<Columns>
<asp:CommandField ShowDeleteButton="False" ShowEditButton="True" />
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
<HeaderTemplate>
<input id="chkAll" önclick="javascript:SelectAllCheckboxes(this);"
runat="server" type="checkbox" />
</HeaderTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Line Number" HeaderText="Line Number" ReadOnly="True"
SortExpression="Line Number" />
<asp:BoundField DataField="Reference" HeaderText="Reference" ReadOnly="True"
SortExpression="Reference" />
<asp:BoundField DataField="QTY" HeaderText="QTY"
SortExpression="QTY" />
<asp:TemplateField HeaderText="EditQTY">
<ItemTemplate>
<asp:TextBox ID ="test" runat="server" />
</ItemTemplate>
<HeaderTemplate>
EditQTY
</HeaderTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
No data could be find!
</EmptyDataTemplate>
</asp:GridView>
此网格具有6列1个编辑按钮2个复选框(第一个项目模板)3行否4个参考5个数量的6个编辑(第二个项目模板).
但是,当我要将数据从此gridview保存到另一个数据库时,对于我放置在Item模板字段数据中的文本框字段(EditQTY列)不会进行传输,这是我的背后代码:
this grid has 6 column 1-editbutton 2-checkbox(first item template) 3-lineNo 4-reference 5-qty 6-editqty(second item template) .
but when I want to save data from this gridview to another database , for textbox field(EditQTY column) that I put in Item template field data doesn''t transfer this is my code behind:
protected void SAVE_btn_Click(object sender, EventArgs e)
{
int C = 0;
for (int i = 0; i < Warehouse_gv.Rows.Count; i++)
{
GridViewRow row = Warehouse_gv.Rows[i];
bool isChecked = ((CheckBox)row.FindControl("chkSelect")).Checked;
if (isChecked)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection(Class1.CnnStr);
cmd.CommandText = "insert into WarehousePart values (@Reference,@EditQty)";
cmd.Connection.Open();
cmd.Parameters.AddWithValue("@Reference", Warehouse_gv.Rows[i].Cells[3].Text);
cmd.Parameters.AddWithValue("@EditQty", Warehouse_gv.Rows[i].Cells[5].Text);
cmd.ExecuteNonQuery();
cmd.Connection.Close();
C = C + 1;
}
}
}
答
检查此
Hi ,
Check this
cmd.Parameters.AddWithValue("@Reference", ((TextBox)Warehouse_gv.Rows[i].FindControl("textbox")).Text);
cmd.Parameters.AddWithValue("@EditQty", ((TextBox)Warehouse_gv.Rows[i].FindControl("textbox2")).Text);
最好的问候
M.Mitwalli
Best Regards
M.Mitwalli
您需要使用FindControl
.
参考:
在GridView中就地编辑 [在ASP.NET 2.0中可编辑GridView [ ^ ]
带有文本框,复选框,单选按钮和下拉列表的可编辑Gridview [ ^ ]
You need to useFindControl
for it.
Refer:
Inplace Edit in GridView[^]
Editable GridView in ASP.NET 2.0[^]
Editable Gridview with Textbox, CheckBox, Radio Button and DropDown List[^]