单击按钮搜索网格视图ItemTemplate文本框值



我的场景是,我有一个网格视图,我有项目模板文本框和一个按钮,当网格视图加载时,用户输入基于ServiceCode的ServiceCode,点击按钮,数据应该显示到网格视图中,当数据显示在网格视图中时,用户键入数量和折扣,然后结果应该显示在净额中,我已经写了代码,但它不起作用,如果有人能和我分享他们的知识,我将不胜感激。

我的Axpx代码是:

        <asp:GridView ID="GridView1" runat="server" Height="157px" Width="639px"
        AutoGenerateColumns="False" BorderWidth="1px"
        HorizontalAlign="Justify" onrowdatabound="GridView1_RowDataBound"
        BackColor="LightGoldenrodYellow" BorderColor="Tan" CellPadding="2"
        ForeColor="Black" GridLines="None" onrowcommand="GridView1_RowCommand">
        <FooterStyle BackColor="Tan" />
        <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue"
        HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
        <HeaderStyle BackColor="#FFFFC4" Font-Bold="True" ForeColor="#BF6000"/>
        <Columns>
        <asp:TemplateField HeaderText="S.No">
        <ItemTemplate>
        <asp:Label ID="label10" runat="server" Font-Bold="true" ForeColor="#BF6000"        Text="<%# Container.DataItemIndex + 1 %>">
        </asp:Label>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Serv Code" >
        <ItemTemplate>
        <asp:TextBox ID="TxtServiceCode" Font-Bold="true" ForeColor="#BF6000" Text='<%#  DataBinder.Eval(Container,"DataItem.ServiceCode") %>'
         runat="server" Width="55px">
        </asp:TextBox>
        <asp:Button ID="Insert" runat="server" BackColor="Ivory" CommandName="InsertRecord"
        Font-Bold="True" ForeColor="#BF6000" Text="Insert" onclick="Insert_Click"/>
         </ItemTemplate>
           </asp:TemplateField>
        <asp:TemplateField HeaderText="Name">
       <ItemTemplate>
          <asp:TextBox ID="TxtName" runat="server" ReadOnly="true" Font-Bold="true"           ForeColor="#BF6000" Width="150px" Text='<%#  DataBinder.Eval(Container, "DataItem.ServiceName") %>'></asp:TextBox>
          </ItemTemplate>
         </asp:TemplateField>
          <asp:TemplateField HeaderText="Serv Amt">
        <ItemTemplate>
        <asp:TextBox ID="TxtServiceAmount" ReadOnly="true" Font-Bold="true" ForeColor="#BF6000" Text='<%# DataBinder.Eval(Container,"DataItem.ServiceAmount") %>'
           runat="server" Width="55px"></asp:TextBox>
        </ItemTemplate>
        </asp:TemplateField>
         <asp:TemplateField HeaderText="Qty">
        <ItemTemplate>
          <asp:TextBox ID="TxtQuantity" Font-Bold="true" ForeColor="#BF6000" Text='<%#       DataBinder.Eval(Container,"DataItem.Quantity") %>'
         runat="server" Width="55px"></asp:TextBox>
           </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Disc Amt">
        <ItemTemplate>
          <asp:TextBox ID="TxtdiscAmt" Font-Bold="true" ForeColor="#BF6000" Text ='<%# DataBinder.Eval(Container,"DataItem.Discount") %>'
AutoPostBack="true" OnTextChanged="TxtdiscAmt_TextChanged" runat="server" Width="55px">                </asp:TextBox>
             </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Net Amt">
            <ItemTemplate>
               <asp:TextBox ID="lblNet" runat="Server" Font-Bold="true"  ForeColor="#BF6000" Width="55" />
            </ItemTemplate>
          </asp:TemplateField>
         </Columns>
           <AlternatingRowStyle BackColor="PaleGoldenrod" />
           </asp:GridView>

我的CS代码是:

 DataSet dss = new DataSet();
  SqlConnection MyConnection = new SqlConnection("server=prog;database=mydatabase; UID=sa;PWD=nato123;");
   SqlCommand sqlcmd = new SqlCommand("select * from [Bill]", MyConnection);
   SqlDataAdapter adp = new SqlDataAdapter(sqlcmd);
   DataSet ds = new DataSet();
    adp.Fill(ds);
   GridView1.DataSource = ds.Tables[0];
   GridView1.DataBind();
    } 

我不使用按钮OnClick事件,而是使用OnCommand并在CommandArgument:中传递项目索引

<asp:Button ID="Button1" runat="server" OnCommand="Button1_Command" CommandArgument='<%#Container.ItemIndex%>' />

代码背后:

protected void Button1_Command(object sender, CommandEventArgs e)
{
    GridViewRow row = GridView1.Rows[(int)e.CommandArgument];
    if (row != null)
    {
        TextBox txt = row.FindControl("TextBox1") as TextBox;
        if (txt != null)
        {
            string value = txt.Text;
        }
    }
}

最新更新