c# - 在 RowEditing 事件处理程序之外访问可编辑的 GridViewRow?
问题描述
在我的gridview
中,一旦有一行,RowEditing
我想DropDownList
在OnRowEditing
.
我的 gridview 有这两个TemplateField
. 两者都有EditItemTemplate
一个下拉列表:
<asp:TemplateField HeaderText="Director">
<ItemTemplate>
<asp:Label ID="Label_Director" runat="server" Text='<%# Eval("Director").ToString() %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DDL_Director" AutoPostBack="true" OnSelectedIndexChanged="DDL_Director_SelectedIndexChanged" runat="server" DataTextField="Category" DataValueField="Category" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="manager">
<ItemTemplate>
<asp:Label ID="Label_manager" runat="server" Text='<%# Eval("manager").ToString() %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DDL_manager" AutoPostBack="true" runat="server" DataTextField="Category" DataValueField="Category" />
</EditItemTemplate>
</asp:TemplateField>
当我编辑一行时,DDL_Director
已填充。这按预期工作:
protected void gridview_emps_OnRowEditing(object sender, GridViewEditEventArgs e)
{
string connString = GetConnString();
gridview_emps.EditIndex = e.NewEditIndex;
BindData();
GridViewRow editingRow = gridview_emps.Rows[e.NewEditIndex];
DropDownList DDL_Director = (editingRow.FindControl("DDL_Director") as DropDownList);
DDL_Director.DataSource = GetCategories(connString, "Director");
DDL_Director.DataBind();
}
这是问题所在:一旦选择了值,我需要填充下拉列表 DDL_manager DDL_Director
。我附在DDL_Director_SelectedIndexChanged
. DDL_Director
调试器内部中断,DDL_Director_SelectedIndexChanged
所以我知道代码正在执行:
protected void DDL_Director_SelectedIndexChanged(object sender, EventArgs e)
// Access dropdownlist control in RowEditing from here?
//DropDownList DDL_manager = (editingRow.FindControl("DDL_manager") as DropDownList);
//DDL_manager.DataSource = GetCategories(connString, "manager");
//DDL_manager.DataBind();
}
问题是我无法从中填充DDL_manager
,DDL_Director_SelectedIndexChanged
因为我无权访问EditingRow
.
DDL_Manager
问题:在中选择一个值后如何填充DDL_Director
?
解决方案
我进行了编辑DDL_Director_SelectedIndexChanged
,如下所示:
protected void DDL_Director_SelectedIndexChanged(object sender, EventArgs e)
{
string connString = GetConnString();
foreach (GridViewRow row in GridView_Emps.Rows)
{
if (row.RowType == DataControlRowType.DataRow && (row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)
{
DropDownList DDL_Manager = (row.FindControl("DDL_Manager") as DropDownList);
DDL_Manager.DataSource = GetCategories(connString, "manager");
DDL_Manager.DataBind();
}
}
}
推荐阅读
- sql - 在 MS Access 中运行 Audit Trail 模块时查询表达式中的语法错误(缺少运算符)
- python - 在 google ml-engine 中使用经过训练的 keras 模型
- c - 为什么这在 C 中显示错误的答案
- java - AmazonDynamoDBv2 查询无法识别 GSI
- postgresql - 如何在 PostgreSQL 中为表创建同义词
- c++ - 这是什么侧音设置?
- java - 错误soapResponse异常SpringBusFactory
- azure - AppServices 不允许在设置名称中使用“:”,但 linux env var 需要
- r - 用另一列中的值替换(gsub)一列中的所有行?
- javascript - 带有插件的 IE11 上的 QuickBlox 应用程序?