Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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 - Fatal编程技术网

如何在C#中获取GridView文本框的值?

如何在C#中获取GridView文本框的值?,c#,asp.net,C#,Asp.net,我有点困惑,如何在行编辑中获取GridView的TextBox值,我有textchange事件,该TextBox值需要通过GridView更新到数据库。但在更新之前,我们需要计算该值 在行更新中,我们通常得到值,但在函数calculationA()中,我没有得到textbox的值。还需要计算该值,并在同一文本框中显示编辑后的值 public void calculationA() { TextBox txt_BCICU = (TextBox)grdlist.FindControl("tx

我有点困惑,如何在行编辑中获取GridView的TextBox值,我有textchange事件,该TextBox值需要通过GridView更新到数据库。但在更新之前,我们需要计算该值

在行更新中,我们通常得到值,但在函数calculationA()中,我没有得到textbox的值。还需要计算该值,并在同一文本框中显示编辑后的值

public void calculationA()
{
    TextBox txt_BCICU = (TextBox)grdlist.FindControl("txt_BCICU");
    TextBox txt_BCSupDlx = (TextBox)grdlist.FindControl("txt_BCSupDlx");
    txt_TotalChargeA.Text = (Convert.ToDecimal(txt_BCSupDlx.Text.Trim()) + Convert.ToDecimal(txt_BCICU.Text.Trim())).ToString(); 

protected void txt_BCICU_TextChanged(object sender, EventArgs e)
    {
        calculationA();
    }     

protected void grdlist_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        TextBox txt_BCICU = (TextBox)grdlist.Rows[e.RowIndex].FindControl("txt_BCICU");
        TextBox txt_BCSupDlx = (TextBox)grdlist.Rows[e.RowIndex].FindControl("txt_BCSupDlx");
    }

方法1


您不需要
TextChanged
事件来获取gridview中textbox的值

您可以在
行更新
事件中获取文本框值,如下面的代码所示

另外,删除calculationA方法,而是使用我在RowUpdate事件中给出的最后一行代码

protected void grdlist_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    string textBox1Text = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txt_BCICU")).Text;

    string textBox2Text = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txt_BCSupDlx")).Text;

    //remove the calculationA function and just use the code below in 
    //RowUpdating event
    txt_TotalChargeA.Text = (Convert.ToDecimal(textBox2Text.Trim()) + Convert.ToDecimal(textBox1Text.Trim())).ToString();
}
方法2

如果必须更改
TextChanged
事件,则可以获得下面代码段中的文本框值

我已经对CalculateA方法的调用进行了注释,因为同样的计算可以在TextChanged事件中完成。请注意如何通过获取引发TextChanged事件的textbox的
NamingContainer
属性来获取当前网格行

在TextChanged事件中获取文本框值

protected void txt_BCICU_TextChanged(object sender, EventArgs e)
{

        //find this textbox Text i.e. txt_BCICU Text
        string txtBCICUText = (sender as TextBox).Text;


        //find the current grid row and through it other textboxes text
        GridViewRow currentRow = (sender as TextBox).NamingContainer as GridViewRow;

        //find textbox txt_BCSupDlx Text
        string txtBCSupDlxText = ((TextBox)currentRow.FindControl("txt_BCSupDlx")).Text;

       //do your calculation here
       txt_TotalChargeA.Text = (Convert.ToDecimal(txtBCSupDlxText.Trim()) + Convert.ToDecimal(txtBCICUText.Trim())).ToString(); 

        //calculationA();
}  

看一看。它涵盖了GridView编辑和更新的所有基础知识。您不需要
TextChanged
事件来实现您的需求。您可以在
行更新
事件中获取文本框值,在同一事件中,您可以执行在
计算a
方法中执行的操作。检查我刚才添加的答案,了解完整的细节。我同意@Sunil,但我必须计算这些值,并显示在gridview的其他标签中。为此,我们需要对同样的阅读进行计算——总结是,这不是一种理想的方式来回答志愿者,并且可能对获得答案产生反作用。先生,我需要做计算,因为我有超过10个文本框的值需要编辑,这就是我需要计算的原因。为此,我必须在gridview中的textchange事件中编辑textbox,但没有值。它只显示空值,我得到了空引用执行选项。你不能在RowUpdate事件中获得所有10个文本框并在那里进行计算吗?我添加了另一种方法,其中使用
TextChanged
event获取文本框的值。因此,您可以使用
方法1
而不使用TextChanged事件,也可以使用
方法2
而不使用TextChanged事件。如果您必须使用
计算a
方法并且无法对其进行注释,那么我可以建议另一个选项。如果你想要,请告诉我,我会把它贴出来。谢谢@Sunil。但我用GridViewRow完成了,它可以根据需要正常工作。谢谢你给我宝贵的时间。