Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从gridview中以编程方式创建的文本框中获取和保存值?_C#_Asp.net_Gridview_Textbox_Postback - Fatal编程技术网

C# 如何从gridview中以编程方式创建的文本框中获取和保存值?

C# 如何从gridview中以编程方式创建的文本框中获取和保存值?,c#,asp.net,gridview,textbox,postback,C#,Asp.net,Gridview,Textbox,Postback,我有gridview,它包含在代码隐藏中创建的文本框 这是页面加载: protected void Page_Load(object sender, EventArgs e) { //my page load is empty; } 以下是选择下拉菜单后按钮的代码,然后单击“Pilih”以显示包含文本框的gridview: public void btnPilihKrit_Click(object sender, EventArgs e) { DataTable dtsubKr

我有
gridview
,它包含在代码隐藏中创建的文本框

这是页面加载:

protected void Page_Load(object sender, EventArgs e)
{
    //my page load is empty;
}
以下是选择下拉菜单后按钮的代码,然后单击“Pilih”以显示包含文本框的gridview:

public void btnPilihKrit_Click(object sender, EventArgs e)
{
    DataTable dtsubKrit = new DataTable();
    dtsubKrit = subkritMgr.getListSubKriteriaByIDKriteria(int.Parse(ddlKrit.SelectedValue));
    NbDtSubKritRow = dtsubKrit.Rows.Count;

    dtGvSubKrit.Columns.Add(new DataColumn("SUBKRITERIA", typeof(string)));
    foreach (DataRow row in dtsubKrit.Rows)
    {
        dtGvSubKrit.Columns.Add(new DataColumn(row["SUBKRITERIA"].ToString(), typeof(string)));
    }
    DataRow dr = null;

    foreach (DataRow row in dtsubKrit.Rows)
    {
        dr = dtGvSubKrit.NewRow();
        dr["SUBKRITERIA"] = row["SUBKRITERIA"];
        dtGvSubKrit.Rows.Add(dr);
    }


    gvKrit2.DataSource = dtGvSubKrit;
    gvKrit2.DataBind();

    ViewState["CurrentTable"] = dtGvSubKrit;
}
这是gridview的rowdatabound中的代码:

protected void gvKrit2_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        for (int i = 1; i <= NbDtSubKritRow; i++)
        {
            TextBox txtNilai = new TextBox();
            txtNilai.ID = "txtNilai" + e.Row.RowIndex.ToString() + i.ToString();
            if (i == e.Row.RowIndex + 1)
            {
                txtNilai.Text = "1";
            }
            else
            {
                txtNilai.Text = "";
            }
            if (i <= e.Row.RowIndex + 1)
            {
                txtNilai.Enabled = false;
            }
            e.Row.Cells[i].Controls.Add(txtNilai);
        }

    }

}
这里有一些例子:

  • ,单击按钮Pilih并选择下拉菜单后,将显示带文本框的gridview,我将用自己的值填充文本框
  • ,通过单击按钮“Proses Perbandingan Berpasangan”从gridview获取值
  • 有人能帮我吗

    我试过很多类似的方法

    TextBox box1 = (TextBox)(gvKrit2.Rows[rowIndex].Cells[1].FindControl("txtNilai")) as TextBox;
    
    但是在
    findcontrol
    中找不到文本框。似乎在回发时未再次创建
    gridview


    我搜索了一些文献,我必须重新创建
    gridview
    ,或者在
    gridview
    中创建rowcreated事件,但现在我没有任何想法来这样做。

    当您在RowDataBound上创建文本框时,ID如下:

     txtNilai.ID = "txtNilai" + e.Row.RowIndex.ToString() + i.ToString();
    
    因此,您需要使用该ID查找:

    string txtid = "txtNilai"+e.Row.RowIndex.ToString()+i.ToString(); // as per given inRowdataBound , so make sure to define i value.
    TextBox textBox = row.FindControl(txtid) as TextBox;
    

    在RowDataBound上创建文本框时,ID如下:

     txtNilai.ID = "txtNilai" + e.Row.RowIndex.ToString() + i.ToString();
    
    因此,您需要使用该ID查找:

    string txtid = "txtNilai"+e.Row.RowIndex.ToString()+i.ToString(); // as per given inRowdataBound , so make sure to define i value.
    TextBox textBox = row.FindControl(txtid) as TextBox;
    

    为什么不使用
    javascript
    来收集值呢?我不擅长javascript,但现在我用不同的方法解决了我的问题。我不再使用gridview,只是简单地制作表格,然后用文本框填充表格。它不受回邮的影响。泰里玛·卡西·帕克(Terima Kasih Pak):)这是一个很好的解决方案,可以帮助我们在欧美、波斯等地实现这一目标。顺便说一句,如果你已经解决了你的问题,请将它添加到答案中,这样任何像你这样有问题的人都可以找到它。:)哦,好的,谢谢你,帕克。saya sudah lama浏览2堆栈溢出tapi baru sekarang注册以获取更多信息。丹·萨亚(dalam hitungan hari sudah mendapat saran atau balasan)说,你为什么不使用
    javascript
    来收集值?我不擅长javascript,但现在我用不同的方法解决了我的问题。我不再使用gridview,只是简单地制作表格,然后用文本框填充表格。它不受回邮的影响。泰里玛·卡西·帕克(Terima Kasih Pak):)这是一个很好的解决方案,可以帮助我们在欧美、波斯等地实现这一目标。顺便说一句,如果你已经解决了你的问题,请将它添加到答案中,这样任何像你这样有问题的人都可以找到它。:)哦,好的,谢谢你,帕克。saya sudah lama浏览2堆栈溢出tapi baru sekarang注册以获取更多信息。但我不想告诉大家,这是一个非常重要的问题,谢谢你们的回答。忘了我在txtNilaioh ya后面添加了索引,我只记得我的问题可能是由控件(文本框)引起的,该控件没有再次创建bcoz的回发。但现在我用不同的方法解决了我的问题。我不再使用gridview,只是简单地制作表格,然后用文本框填充表格。它没有受到回帖的影响。谢谢你的回答。忘了我在txtNilaioh ya后面添加了索引,我只记得我的问题可能是由控件(文本框)引起的,该控件没有再次创建bcoz的回发。但现在我用不同的方法解决了我的问题。我不再使用gridview,只是简单地制作表格,然后用文本框填充表格。它不受回邮的影响。