1

次のような2つのアイテムテンプレート1-チェックボックス2-テキストボックスを含むグリッドビューがあります。

<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-lineNo4-参照5-数量6-editqty(2番目のアイテムテンプレート)。しかし、このグリッドビューから別のデータベースにデータを保存したい場合、アイテムテンプレートフィールドデータに入力したテキストボックスフィールド(EditQTY列)は転送されません。これは私のコードビハインドです。

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;
            }
        }
    }.
4

1 に答える 1

2

IDが。であるFindControl参照を取得するには、メソッドを使用する必要があります。TextBoxtest

TextBox test=row.FindControl("test")) as TextBox;

if(test!=null){
  //
}
于 2012-09-08T06:35:20.907 に答える