+ -
当前位置:首页 → 问答吧 → 如何取得gridview模板列中textbox控件的值

如何取得gridview模板列中textbox控件的值

时间:2011-12-11

来源:互联网

我的目的是希望点击选取时记录下模板列“此次退货”的textbox1控件的值

前端代码如下:
  <asp:GridView ID="GvData" runat="server" Width="99%" AutoGenerateColumns="False"
  CssClass="gridview" EmptyDataText="没有数据" 
  ShowFooter="True" onrowdatabound="GvData_RowDataBound" 
  onrowediting="GvData_RowEditing" onrowupdating="GvData_RowUpdating" >
  <PagerSettings Visible="False" />
  <Columns>
  <asp:BoundField HeaderText="成品代码" DataField="成品代码" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField> 
  <asp:BoundField HeaderText="成品名称" DataField="成品名称" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:BoundField HeaderText="花型代码" DataField="花型代码" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:BoundField HeaderText="花型名称" DataField="花型名称" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:BoundField HeaderText="规格代码" DataField="规格代码" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:BoundField HeaderText="规格名称" DataField="规格名称" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:BoundField HeaderText="标准单价" DataFormatString="{0:N2}" HtmlEncode="false" DataField="标准单价" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:BoundField HeaderText="可退数量" DataFormatString="{0:N2}" HtmlEncode="false" DataField="可退数量" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:TemplateField HeaderText="此次退货" ><ItemTemplate><asp:TextBox ID="TextBox1" runat="server" EnableViewState ="true" ></asp:TextBox></ItemTemplate><ItemStyle HorizontalAlign="Center" /></asp:TemplateField>
  <asp:BoundField HeaderText="可退单价" DataFormatString="{0:N2}" HtmlEncode="false" DataField="可退单价" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:BoundField HeaderText="VIP代码" DataField="VIP代码" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:BoundField HeaderText="VIP名称" DataField="VIP名称" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:BoundField HeaderText="设计师代码" DataField="设计师代码" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:BoundField HeaderText="设计师名称" DataField="设计师名称" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:TemplateField HeaderText="选取"><ItemTemplate><asp:LinkButton ID="linkbtnChose" CommandArgument='<%#Eval("成品代码")+"|"+Eval("花型代码")+"|"+Eval("规格代码")+"|"+Eval("VIP代码")+"|"+Eval("设计师代码") %>' runat="server" OnClick="linkbtnSales_Click" ForeColor="Red">选取</asp:LinkButton></ItemTemplate><ItemStyle HorizontalAlign="Center" /></asp:TemplateField>
  </Columns>
  <RowStyle Height="25px" />
  <EmptyDataRowStyle ForeColor="Red" HorizontalAlign="Center" />
  <FooterStyle Height="20px" HorizontalAlign="Center" BackColor="Yellow" ForeColor="Blue" />
  </asp:GridView>

后端代码1:
  protected void linkbtnSales_Click(object sender, EventArgs e)
  {
  string txt = ((TextBox)GvData.Rows[e.RowIndex].FindControl("TextBox1")).Text;
  }
这样写提示system.EventArgs不包含RowIndex的定义

后端代码2:
  protected void linkbtnSales_Click(object sender, GridViewUpdateEventArgs e) 
  {
  string txt = ((TextBox)GvData.Rows[e.RowIndex].FindControl("TextBox1")).Text;
  }
这样写提示:编译器错误消息: CS0123: “linkbtnSales_Click”的重载均与委托“System.EventHandler”不匹配

请问这里应该怎么才能取得textbox1的值呢?

作者: fennyli78   发布时间: 2011-12-11

foreach (GridViewRow gvr in gvInBillList.Rows)
  {
  TextBox t = gvr.FindControl("TextBox1") as TextBox;
  if (t != null)
  {
  t.Text = "给TextBox1赋值";
  }
  }

作者: hefeng_aspnet   发布时间: 2011-12-11

用循环,这是两种情况,两个例子,你可以仿照着改
 for (int i = 0; i < gridView1.Rows.Count; i++)
  {
  string strC = ((TextBox)gridView1.Rows[i].Cells[4].FindControl("txtCount")).Text;

  pid = ((HiddenField)gridView1.Rows[i].FindControl("hiddenFiled1")).Value;
  }

作者: hefeng_aspnet   发布时间: 2011-12-11

后端代码1:
  protected void linkbtnSales_Click(object sender, EventArgs e)
  {
  string txt = ((TextBox)GvData.Rows[e.RowIndex].FindControl("TextBox1")).Text;
  }
这样写提示system.EventArgs不包含RowIndex的定义

------------------------------
string txt = ((TextBox)GvData.Rows[e.RowIndex].FindControl("TextBox1")).Text;
=>
TextBox textBox = sender.NamingContainer.FindControl("TextBox1") as TextBox;
if(textBox!=null)
{
  string txt = textBox.Text;
}

作者: Sandy945   发布时间: 2011-12-12