中易网

gridview,TemplateField,TextBox

答案:2  悬赏:60  
解决时间 2021-04-28 19:08
  • 提问者网友:冰点阿弟
  • 2021-04-27 19:33

前台:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
            Width="419px">
            <Columns>
                <asp:BoundField DataField="stuID" HeaderText="学号" />
                <asp:BoundField DataField="stuName" HeaderText="姓名" />
                <asp:BoundField DataField="stuGrade" HeaderText="年级" />
                <asp:BoundField DataField="stuClass" HeaderText="班级" />
                <asp:TemplateField HeaderText="分数">
                    <ItemTemplate>
                        <asp:TextBox ID="score" runat="server"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

后台:protected void btnsubmit_Click(object sender, EventArgs e)
    {
       
        string teaID = Session["id"].ToString();
        string connstring = ConfigurationManager.AppSettings["DBConnectionString"];
        SqlConnection conn = new SqlConnection(connstring);
        conn.Open();

for(int i=0;i<GridView1.Rows.Count;i++)
            {
                string stuID = GridView1.Rows[i].Cells[0].Text;
                string score = ((TextBox)(GridView1.Rows[i].Cells[4].FindControl("score"))).Text.ToString();

 Response.Write(score);
            }

}

 

为什么取不出textbox中的值,输出为空???急~~

最佳答案
  • 二级知识专家网友:山鬼偶尔也合群
  • 2021-04-27 19:54

你那个按钮的单击事件写错了。准确的代码应该如下:



string teaID = Session["id"].ToString();
    string connstring = ConfigurationManager.AppSettings["DBConnectionString"];
    SqlConnection conn = new SqlConnection(connstring);
    conn.Open();
    
    for (int i = 0; i < GridView1.Rows.Count; i++)
    {
    string stuID = GridView1.Rows[i].Cells[0].Text;
    string score = ((TextBox)(GridView1.Rows[i].Cells[4].FindControl("TextBox1"))).Text.ToString();
    GridView1.DataSourceID = "SqlDataSource1";
    GridView1.DataBind();
    Response.Write(score.ToString()+",");
    }    
    conn.Close();




注意其中 string score = ((TextBox)(GridView1.Rows[i].Cells[4].FindControl("TextBox1"))).Text.ToString();
中的TextBox1表示GridView1这个控件中的模板的名称,你要根据你那个模板的名字去改它才可以的。



如果还有问题可以联系我qq:1104662767

全部回答
  • 1楼网友:如果这是命
  • 2021-04-27 20:12

楼上的说得很对,((TextBox)(GridView1.Rows[i].Cells[4].FindControl("TextBox1"))).Text.ToString(); 这里面的TextBox1 就是你添加到模板列里面那个TextBox1

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息