我无法弄清楚如何在动态创建的gridview中访问控件的值。问题是我不知道控件的名称。如果我知道控件的名称我可以做到这一点:
string dropDownListText =((DropDownList).row.FindControl("DropDownList1")).SelectedItem.Value;`
我知道控件的类型,我知道它所在的单元格。有没有办法使用控件的信息,我必须能够访问控件的值?
答案 0 :(得分: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();
答案 1 :(得分:0)
在GridView的ItemDataBound事件处理程序上,按如下方式访问表格单元格。在单元格内,Controls集合允许您访问嵌入在单元格中的ASP控件
TableCell cell = e.Item.Cells[0];
if (cell.Controls.Count > 0)
{
cell.Controls[0].Visible = false;
}
答案 2 :(得分: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")) {
}
}