【发布时间】:2014-05-12 09:39:59
【问题描述】:
我只想在行编辑模式下的网格视图时动态绑定两个下拉列表。这里我声明了一个代码块,它动态获取该行状态并绑定这两个下拉列表。
这里是代码:
protected void GV_ViewCustomers_RowDataBound(object sender, GridViewRowEventArgs e)
{
...............
if (e.Row.RowType == DataControlRowType.DataRow && (e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)
{
using (DataClassesDataContext db = new DataClassesDataContext())
{
DropDownList dl = (DropDownList)e.Row.FindControl("DDL_Types1");
dl.DataSource = db.PartyTypes.Select(t => t).ToList();
dl.DataBind();
dl.SelectedValue = DataBinder.Eval(e.Row.DataItem, "type_id").ToString();
DropDownList dl1 = (DropDownList)e.Row.FindControl("DDL_CountryNames1");
dl1.DataSource = db.Countries.Select(c => c).ToList();
if (!string.IsNullOrEmpty(DataBinder.Eval(e.Row.DataItem, "country_id").ToString()))
{
dl1.SelectedValue = DataBinder.Eval(e.Row.DataItem, "country_id").ToString();
DropDownList dl2 = (DropDownList)e.Row.FindControl("DDL_StateNames1");
dl2.DataSource = db.States.Where(s => s.country_id.Equals(int.Parse(DataBinder.Eval(e.Row.DataItem, "country_id").ToString()))).Select(s => s).ToList();
dl2.DataBind();
}
DataRowView rowView1 = (DataRowView)e.Row.DataItem;
if (rowView1["UserOFC"] != null)
{
(e.Row.FindControl("chk_UserOFC1") as CheckBox).Checked = Convert.ToBoolean(e.Row.DataItem.Equals("UserOFC").ToString());
}
if (rowView1["UserVAT"] != null)
{
(e.Row.FindControl("chk_UserVAT1") as CheckBox).Checked = Convert.ToBoolean(e.Row.DataItem.Equals("UserVAT").ToString());
}
if (rowView1["UserINV"] != null)
{
(e.Row.FindControl("chk_UserINV1") as CheckBox).Checked = Convert.ToBoolean(e.Row.DataItem.Equals("UserINV").ToString());
}
if (rowView1["UserNone"] != null)
{
(e.Row.FindControl("chk_UserNone1") as CheckBox).Checked = Convert.ToBoolean(e.Row.DataItem.Equals("UserNone").ToString());
}
}
}
..................
}
这是在行编辑模式下绑定下拉列表的正确方法吗?
请帮帮我....
【问题讨论】:
-
您对此有任何错误或问题吗?
-
不,这不会绑定此下拉列表。我怎么怀疑这不是在行编辑模式下绑定下拉列表和复选框的正确方法。
-
我认为您在行编辑事件中,所以这也很好。您可以通过识别网格的编辑行在 RowDataBinding 事件中执行此绑定。
-
再次查看问题,我想我错过了上界线。
-
是的。那个事件也是正确的。还有另一个事件叫做 RowDataBining。您也可以在该事件中进行绑定。你的努力没问题。 :)
标签: c# asp.net-4.0