如何在C#中获取GridView文本框的值?
我有点困惑,如何在行编辑中获取GridView的TextBox值,我有textchange事件,该TextBox值需要通过GridView更新到数据库。但在更新之前,我们需要计算该值 在行更新中,我们通常得到值,但在函数calculationA()中,我没有得到textbox的值。还需要计算该值,并在同一文本框中显示编辑后的值如何在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
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完成了,它可以根据需要正常工作。谢谢你给我宝贵的时间。