我有一个带有文本框的gridview
我想在按钮单击时获取此文本框的值
但我总是收到“0”(默认)值
我认为这个问题与视图状态有关,但我不确定
请告诉我我做错了什么?
源代码:
protected void Page_Load(object sender, EventArgs e)
{
    DataSet dataSet = new DataSet("MyDataSet");
    DataTable table = new DataTable();
    table.Columns.Add(new DataColumn("NameValue"));
    table.Columns.Add(new DataColumn("Number"));
    table.Columns.Add(new DataColumn("NumberValue"));
    dataSet.Tables.Add(table);
    DataRow row = dataSet.Tables[0].NewRow();
    row[0] = "Name";
    row[1] = "0";
    dataSet.Tables[0].Rows.Add(row);
    this.MyGridView.DataSource = dataSet;
    this.MyGridView.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
    TextBox txtsn = ((TextBox)this.MyGridView.Rows[0].FindControl("NumberTextBox"));
    string sn = txtsn.Text;
}
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
        <asp:GridView ID="MyGridView" AutoGenerateColumns="false" ShowHeader="false" runat="server" >
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Label ID="NameLabel" runat="server" Text='<%#Eval("NameValue")%>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:TextBox ID="NumberTextBox" runat="server" Text='<%#Eval("NumberValue")%>' />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
    </form>
</body>