我在ASP.NET页面上有一个GridView,其TemplateField列在ItemTemplate中有一个TextBox。然后我有一个命令字段,它应该从这个TextBox中提取文本并在运行存储过程的SqlCommand中使用它。
这是我的C#代码:
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = this.gvwSNConfirm.Rows[index];
TableCell intID = selectedRow.Cells[1];
int reqID = int.Parse(intID.Text);
// Get the SN from the text box on the selected row
TableCell snCell = selectedRow.Cells[0];
TextBox tbox = (TextBox)staffNum.FindControl("txtSN");
string stSN = tbox.Text.ToString();
当我添加断点以查看intID和tbox.Text的值时,我得到了正确的ID但是tbox的文本是“”。
我引用的两列的标记是
<asp:TemplateField HeaderText="SN">
<ItemTemplate>
<asp:TextBox ID="txtSN" runat="server" MaxLength="20" Width="100px" />
</ItemTemplate>
<HeaderStyle BackColor="#171695" Font-Names="Arial" Font-Size="Small" ForeColor="White" Wrap="true" />
</asp:TemplateField>
<asp:BoundField DataField="Request" HeaderText="Request" ReadOnly="true" SortExpression="Request" />
任何人都可以提供任何帮助,为什么我无法从文本框中获取文本?它第一次工作,但随后所有的tbox文本值都是“”。
非常感谢
安迪
新法典(05/03/2010):
protected void gvwSecond_RowCommand(object sender, GridViewCommandEventArgs e)
{
if ((e.CommandName == "Confirm") || (e.CommandName == "Decline"))
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = gvwSecond.Rows[index];
int secondID = int.Parse(row.Cells[1].Text);
TextBox txtsn = ((TextBox)row.FindControl("txtSecSN"));
string sn = txtsn.Text;
答案 0 :(得分:1)
此代码中包含哪些事件?你应该e.Item.FindControl。如果您确实获得了正确的控制权,但Text是空的,这意味着它要么没有被回发,要么被其他地方清除。
答案 1 :(得分:1)
我曾经遇到过同样的问题。我还必须从服务器上的GridView中的TextBox中检索文本值,并且我总是得到一个空字符串。我不得不为Gridview和Textbox设置EnableViewState =“false”,它就像魅力一样。