我不知道如何在动态创建的网格视图中访问控件的值。问题是我不知道控件的名称。如果我知道控件的名称,我可以这样做:
string dropDownListText =((DropDownList).row.FindControl("DropDownList1")).SelectedItem.Value;`
我知道控件的类型,并且知道它所在的单元格。有什么方法可以使用有关控件的信息来访问控件的值?
如果你知道它是什么单元格,那么你可以做这样的事情;
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();
在 GridView 的 ItemDataBound 事件处理程序上,按如下方式访问表格单元格。在单元格内,控件集合使您可以访问嵌入在单元格中的 ASP 控件
TableCell cell = e.Item.Cells[0];
if (cell.Controls.Count > 0)
{
cell.Controls[0].Visible = false;
}
我曾经也有过一样的问题。将命令名称添加到您的字段,例如 CommandName="ProjectClick"。然后添加一个 rowcommand 并在 row 命令中执行以下操作:
if (e.CommandName.Equals("ProjectClick")) {
}
或者您可以使用以下文本:
if (e.CommandName.Equals("")) {
if (((System.Web.UI.WebControls.LinkButton)(e.CommandSource)).Text.Equals("Projects")) {
}
}