0
我编辑的网格视图,如果我点击任何一行编辑说,“X”,它在编辑模式下打开,但是如果我点击任何其他行,说“Y”,“X”应取消编辑。但在点击“y”后,在我的代码中,两行都保持编辑模式。网格视图编辑问题
protected void gvViewAdmins_RowEditing(object sender, GridViewEditEventArgs e)
{
gvViewAdmins.EditIndex = e.NewEditIndex;
Label lblEmailId = gvViewAdmins.Rows[e.NewEditIndex].FindControl("gvlblEmail") as Label;
lblEmailId.Visible = false;
ViewState["currentEmailId"] = lblEmailId.Text;
TextBox textboxEmailId = gvViewAdmins.Rows[e.NewEditIndex].FindControl("gvtbEmailId") as TextBox;
textboxEmailId.Text = ViewState["currentEmailId"].ToString();
textboxEmailId.Visible = true;
Label lblRole = gvViewAdmins.Rows[e.NewEditIndex].FindControl("gvlblRole") as Label;
lblRole.Visible = false;
ViewState["currentRole"] = lblRole.Text;
DropDownList dropdownRoles = gvViewAdmins.Rows[e.NewEditIndex].FindControl("gvddlRoles") as DropDownList;
this.PopulateRole(dropdownRoles);
dropdownRoles.Visible = true;
this.SelectRoleDropDownValue(dropdownRoles);
LinkButton lbtnUpdate = gvViewAdmins.Rows[e.NewEditIndex].FindControl("lbtnUpdate") as LinkButton;
LinkButton lbtnCancel = gvViewAdmins.Rows[e.NewEditIndex].FindControl("lbtnCancel") as LinkButton;
LinkButton lbtnEdit = gvViewAdmins.Rows[e.NewEditIndex].FindControl("lbtnEdit") as LinkButton;
lbtnUpdate.Visible = true;
lbtnCancel.Visible = true;
lbtnEdit.Visible = false;
}
我的代码有什么问题?
好了,现在我改变了我的代码按你的样品。但是有一个下拉列表,只有在编辑模式下才能看到。如果我将它保存在中,findControl的代码在代码后面不起作用。 'DropDownList dropdownRoles = gvViewAdmins.Rows [e.NewEditIndex] .FindControl(“gvddlRoles”)为DropDownList; this.PopulateRole(dropdownRoles); dropdownRoles.Visible = true; this.SelectRoleDropDownValue(dropdownRoles);'这里下拉显示空值,而调试。 –
user1181942
2012-04-03 05:11:56
我知道了......我必须在PreRender事件中找到控件,而不是在行Edititng中......感谢您的帮助:) – user1181942 2012-04-03 05:56:24
您还可以在行数据绑定事件中查找控件,方法是检查是否(e.Row.RowIndex == gDViewAdmins.EditIndex){DropDownList dropdownRoles = gvViewAdmins.Rows [e.NewEditIndex] .FindControl(“gvddlRoles”)作为DropDownList},它检查当前绑定行是编辑行。另外,没有必要写“dropdownRoles.Visible = true;”。无论如何它都会显示它。 – 2012-04-05 04:43:58