从templatefields gridview获取值 - C#

时间:2011-07-26 07:39:32

标签: c# gridview templatefield buttonfield

我正在使用gridview来显示从数据库中查询的表...

在这个gridview中,我还添加了一个buttonfield和3个模板字段......

当我按下buttonfield时,会获取数据库中的数据,但是 从模板字段插入的手动数据不是..似乎获取了空值。

从xml文件中我将触发以下事件:

OnRowCommand="GridView1_SelectedIndexChanged1"

并使用以下方法来捕获该事件:

protected void GridView1_SelectedIndexChanged1(object sender, GridViewCommandEventArgs e)
        {
            int x = Convert.ToInt32(e.CommandArgument);
            GridView1.SelectRow(x);

            GridViewRow row = GridView1.Rows[x];

            Response.Write(row.Cells[0].Text + "\t");
            Response.Write(row.Cells[1].Text + "\t");
            Response.Write(row.Cells[2].Text + "\t");
            Response.Write(row.Cells[3].Text + "\t");
            Response.Write(row.Cells[4].Text + "\t");
            Response.Write(row.Cells[5].Text + "\t");
            Response.Write(row.Cells[6].Text + "\t");
            Response.Write(row.Cells[7].Text + "\t");
            Response.Write(row.Cells[8].Text + "\t");  
           }

关于如何从该模板字段中获取值的任何想法?我需要捕获另一个事件而不是GridViewCommandEventArgs吗?如果是这样,我应该从xml部分抛出什么事件?

谢谢,

2 个答案:

答案 0 :(得分:0)

您可以找到添加到该行的控件,然后使用text属性获取它的值。 类似于row.FindControl(<urIdgoeshere>)\\cast it to textBox的东西然后使用.Text来获取它的值。

GridViewRow row = GridView1.Rows[x];

Response.Write((TextBox)row.FindControl('txtbox1')).Text;

答案 1 :(得分:0)

我正在与之战斗,我曾经使用asp [BoundField]的Cells []代码。 现在我不得不切换到模板字段,因为我需要页脚中的按钮等。 我正在拉我的头发,我使用Ashley建议的相同代码,我得到System.NullReferenceException:对象引用未设置为对象的实例。

我在row命令事件中执行此操作。 从3天开始就是这样:(

编辑: 我的问题的快速解决方案:我已经在页脚上创建了字段ID,并且我没有给我的ItemTemplate提供ID,即我在那里唯一的东西是&lt;%#Eval(&#34;描述&#34)%GT; 看起来没有办法选择这些数据,而没有在后面的代码中提供某种ID。我是愚蠢的,后来没有注意到这个简单的事实。