如何在datagrid的模版编辑列里动态绑定了一个dropdownlist
2014-04-05 09:22
555 查看
如何在datagrid的模版编辑列里动态绑定了一个dropdownlist
现在我就把实现在datagrid的模版编辑列里动态绑定了一个dropdownlist的方法总结如下,希望能对一些后来学习的人有帮助^_^ ///首先在aspx文件里定义datagrid和dropdownlist<asp:datagrid id=dg_js runat="server" CellPadding="2" AutoGenerateColumns="False"><Columns>
<asp:BoundColumn DataField="stu_id" ReadOnly="True" HeaderText="学号"></asp:BoundColumn>
<asp:BoundColumn DataField="stu_name" ReadOnly="True" HeaderText="姓名"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="角色">
<HeaderTemplate>角色</HeaderTemplate>
<ItemTemplate>
<asp:Label id="Label1" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.role_name") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList id="ddl_js" runat="server" DataTextField="role_name" DataValueField="role_id"></asp:DropDownList>
</EditItemTemplate></asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="保存" HeaderText="编辑" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
</Columns>
</asp:datagrid> ///如果你觉得自己手敲其中的模版列那段代码比较难,你也可以在设计视图中定义,具体操作是:建立一个datagrid,选中它右击,选择属性生成器 ——>选定列——>添上你要绑定的数据字段,勾选去掉“只读”,然后点击“将次列转换为模版列”。仍选中datagrid右击,编辑模版—— >选择你刚刚定义的那一列,在ItemTeplate里面拖入一个Label,在EditItemTemplat里面拖入一个 dropdownlist,这样都生成了上面相应的html代码。 ///在aspx.cs文件里绑定datagrid
public DataSet get_roleInfo()
{
try
{
DataSet ds=new DataSet();
string searchString="select stu_id,stu_name,role_id,role_name from t_role";
da=new OleDbDataAdapter(searchString,conn);
da.Fill(ds,"roleTable");
return ds;
}
catch
{
return null;
}
} //绑定DataGrid
private void BindGrid()
{
DataSet ds = new DataSet();
ds =this.get_roleInfo();
if (ds!=null)
{
this.dg_js.DataSource = ds;
this.dg_js.DataBind();
}
else
{
msg.Alert("加载数据错误!",Page);
}
} ///绑定datagrid的ItemDataBind()事件,让其正常显示下为Label,在编辑状态下为DropDownList。在这里写的代码就是要实现当我们选择编辑时根据Label的值自动从数据库中取出编号为role_id值的role_name,并用DropDownList默认选中。string current; //定义一个全局变量 private void dg_js_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs
e)
{
if(e.Item.ItemType==ListItemType.EditItem)
{
DropDownList ddl_js = (DropDownList)e.Item.FindControl("ddl_js");
///以下是绑定将ddl_js与数据库绑定
SqlConnection olecon=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"].ToString());
string select="select [t_role].[role_id],role_name from t_role";
SqlDataAdapter da=new SqlDataAdapter(select,olecon);
DataSet ds=new DataSet();
da.Fill(ds,"roleTable");
ddl_js.DataSource = ds.Tables["roleTable"].DefaultView;
ddl_js.DataTextField="role_name";
ddl_js.DataValueField="role_id";
ddl_js.DataBind();
olecon.Close();
ddl_js.SelectedIndex = ddl_js.Items.IndexOf(ddl_js.Items.FindByText(current)); }}///ddl_js.SelectedIndex = ddl_js.Items.IndexOf(ddl_js.Items.FindByText(current)); 这种方法我在别人写的技术文章里看到过好几次,但我觉得并不好用,经常会出错,因为ddl_js.SelectedValue值有可能有空格,需要用 ddl_js.SelectedValue.Trim()方法将空格去掉。所以我推荐用for循环的方法,具体的代码如下for(int
i=0;i<ddl_js.Items.Count;i++)
{
if(ddl_js.Items[i].Text.Trim()==(current))
{
ddl_js.SelectedIndex=i;
}
}
///最后一步,只要在datagrid的EditCommand()方法里面添上相应代码即可^^private void dg_js_EditCommand_1(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{ Label lbl_js=(System.Web.UI.WebControls.Label)e.Item.FindControl("Label1");
current = lbl_js.Text.Trim(); //在把datagrid变成编辑模式之前获取到模版列itemplate中的label的值,并将它赋给全局变量current
dg_js.EditItemIndex=e.Item.ItemIndex;
BindGrid();
}
相关文章推荐
- 编辑DataGrid时动态绑定DropDownList
- 一个只读列、绑定列、模板列(动态下拉)、编辑列都有的DataGrid
- 如何在动态绑定的DropDownlist的最前面加上一个空白项或“全部”
- WPF如何将datagrid绑定到多张表并且允许编辑
- DataGrid动态绑定DropDownList
- DataGrid编辑时让DropDownList绑定数据库中某项表并设置默认选中
- iOS--- 动态添加了按钮,绑定同一个点击事件,如何判断点击的是哪个?
- 在一个DataGrid中加入一个DropDownList后如何给DropDownList赋值
- datagrid中使用dropdownlist编辑模版时遇到问题
- 如何用jbpm做出一个状态可视化动态可编辑的工作流平台-1
- winform有一个combobox和一个textbox控件,如何进行动态绑定,使得combobox中的数据改变时,textbox中的数据也随之改变?
- DataGrid中DropDownList的动态绑定和触发DropDownList事件
- DataList的编辑、更新、删除、全选、分页以及 <EditItemTemplate>模版中的DropDownList的数据绑定
- dropdownlist控件如何绑定动态数据
- DataGrid中DropDownList的动态绑定和触发DropDownList事件
- DataGrid中DropDownList的动态绑定和触发DropDownList事件
- 在DataGrid里面绑定ComboBox列时无法在编辑模板下默认选中一个备选值的一种解决方法
- ios 动态添加了按钮,绑定同一个点击事件,如何判断点击的是哪个?
- vue动态数据绑定1--如何监听一个对象的变化
- 如何将枚举类型作为数据源绑定在一个DROPDOWNLIST上,并指定用户可见枚举的真实值是名称