0

我不知道如何在动态创建的网格视图中访问控件的值。问题是我不知道控件的名称。如果我知道控件的名称,我可以这样做:

string dropDownListText =((DropDownList).row.FindControl("DropDownList1")).SelectedItem.Value;`

我知道控件的类型,并且知道它所在的单元格。有什么方法可以使用有关控件的信息来访问控件的值?

4

3 回答 3

2

如果你知道它是什么单元格,那么你可以做这样的事情;

TableCell tc = GridView1.Cells[indexOfCell]; 
// where GridView1 is the id of your GridView and indexOfCell is your index
foreach ( Control c in tc.Controls ){
    if ( c is YourControlTypeThatYouKnow ){
        YourControlTypeThatYouKnow myControl = (YourControlTypeThatYouKnow)c;
    }
}

如果你不知道它到底是什么单元格,那么你总是可以遍历每个单元格。我确信在 Linq 中有更好的方法。

使用 Linq(我认为这应该可行)

var controls = GridView1.Cells[indexOfCell].Cast<Control>();
YourControlTypeThatYouKnow myControl = (YourControlTypeThatYouKnow) controls.Where( x => x is YourControlTypeThatYouKnow).FirstOrDefault();
于 2012-05-03T15:49:29.190 回答
0

在 GridView 的 ItemDataBound 事件处理程序上,按如下方式访问表格单元格。在单元格内,控件集合使您可以访问嵌入在单元格中的 ASP 控件

TableCell cell = e.Item.Cells[0];
if (cell.Controls.Count > 0)
{
   cell.Controls[0].Visible = false;
}
于 2012-05-03T15:41:37.903 回答
0

我曾经也有过一样的问题。将命令名称添加到您的字段,例如 CommandName="ProjectClick"。然后添加一个 rowcommand 并在 row 命令中执行以下操作:

if (e.CommandName.Equals("ProjectClick")) {
}

或者您可以使用以下文本:

if (e.CommandName.Equals("")) {
    if (((System.Web.UI.WebControls.LinkButton)(e.CommandSource)).Text.Equals("Projects")) {
    }
}
于 2012-05-03T15:50:20.883 回答