我在dropdownlist
(gridview
)的页脚行中使用了ASP.Net
,并在rowdatabound
事件中填写了 try
{
if (gvProjects.Rows.Count > 0 && e.Row.RowIndex != -1)
{
string proj_Id = Convert.ToString(gvProjects.DataKeys[e.Row.RowIndex].Value);
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlProject = (DropDownList)e.Row.FindControl("ddlProject");
if (ddlProject != null && ddlProject.Items.Count == 0)
{
objMaster.FillProjects(ddlProject);
ddlProject.SelectedValue = proj_Id;
}
}
}
}
catch (Exception excep)
{
lbl_msg.Text = excep.Message;
}
}
,第一次它工作正常但是当表单是postbacked,dropdown被清除。
可以通过在每个回发上重新填充它来解决,但我希望只有单次代码绑定调用满足我的需要, 表示有没有办法在回发时停止为空。
寻找您的解决方案和建议 Thnx提前......
Supriya
代码:
protected void gvProjects_RowDataBound(object sender,GridViewRowEventArgs e) {
{{1}}
只要网格绑定就会调用它,可以避免它。
答案 0 :(得分:0)
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillDropdown();
}
}
答案 1 :(得分:0)
使用此代码,您将避免在每个rowdatabound中填充位于gridview页脚中的下拉列表:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.Footer)
{
//do the binding for the normal rows
}
}
如您所见,rowdatabound将仅在页眉和普通行上执行,但不在页脚中执行。
希望这有帮助!