不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
在EditItemTemplate中对DropDownList进行数据绑定
编辑:dnawo 日期:2008-06-11
DataList和GridView等数据绑定控件给我们提供了一个非常实用的功能:只需编写很少的代码就能实现数据的更新和删除。在实现数据的更新时需要使用EditItemTemplate模板,我们常见的EditItemTemplate模板中的代码形如:
注意上边使用的是TextBox,但有时所需更改的数据是某个序列中的一个成员,此时我们就应使用DropDownList控件,如下所示:
问题随之而来,怎么在点击编辑按钮后对DropDownList1进行数据绑定?这还是比较好解决的,可在DataList1_Edit函数中进行绑定,代码如下:
此外还有一种绑定方法:
数据绑定问题是解决了,但新的问题又随之而来:怎么让原先的值处于选中状态?不然给编辑造成了一定的不便!要解决这个问题,就先得想办法获取到原先的值,尝试了多种方法都无法直接获取,最终,在EditItemTemplate放个隐藏的表单来解决:
复制内容到剪贴板
程序代码

<asp:DataList ID="DataList1" runat="server" DataKeyField="ID" OnEditCommand="DataList1_Edit">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Province") %>'></asp:Label>
<asp:Button ID="Button1" runat="server" CommandName="edit" Text="编辑" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("Province") %>'></asp:TextBox>
</EditItemTemplate>
</asp:DataList>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Province") %>'></asp:Label>
<asp:Button ID="Button1" runat="server" CommandName="edit" Text="编辑" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("Province") %>'></asp:TextBox>
</EditItemTemplate>
</asp:DataList>
注意上边使用的是TextBox,但有时所需更改的数据是某个序列中的一个成员,此时我们就应使用DropDownList控件,如下所示:
复制内容到剪贴板
程序代码

<asp:DataList ID="DataList1" runat="server" DataKeyField="ID" OnEditCommand="DataList1_Edit">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Province") %>'></asp:Label>
<asp:Button ID="Button1" runat="server" CommandName="edit" Text="编辑" />
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</EditItemTemplate>
</asp:DataList>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Province") %>'></asp:Label>
<asp:Button ID="Button1" runat="server" CommandName="edit" Text="编辑" />
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</EditItemTemplate>
</asp:DataList>
问题随之而来,怎么在点击编辑按钮后对DropDownList1进行数据绑定?这还是比较好解决的,可在DataList1_Edit函数中进行绑定,代码如下:
复制内容到剪贴板
程序代码

/// <summary>
/// 编辑
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
protected void DataList1_Edit(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
DataList1.EditItemIndex = e.Item.ItemIndex;
DataList1_DataBind();
//对DropDownList1进行数据绑定
string[] province = { "北京", "上海", "福建" };
DropDownList MyDropDownList = (DropDownList)DataList1.Items[e.Item.ItemIndex].FindControl("DropDownList1");
for (int i = 0; i < province.Length; i++)
{
MyDropDownList.Items.Add(new ListItem(province[i], province[i]));
}
}
/// 编辑
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
protected void DataList1_Edit(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
DataList1.EditItemIndex = e.Item.ItemIndex;
DataList1_DataBind();
//对DropDownList1进行数据绑定
string[] province = { "北京", "上海", "福建" };
DropDownList MyDropDownList = (DropDownList)DataList1.Items[e.Item.ItemIndex].FindControl("DropDownList1");
for (int i = 0; i < province.Length; i++)
{
MyDropDownList.Items.Add(new ListItem(province[i], province[i]));
}
}
此外还有一种绑定方法:
复制内容到剪贴板
程序代码

<asp:DataList ID="DataList1" runat="server" DataKeyField="ID" OnEditCommand="DataList1_Edit">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Province") %>'></asp:Label>
<asp:Button ID="Button1" runat="server" CommandName="edit" Text="编辑" />
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataSource='<%# DropDownList1_DataBind() %>'>
</asp:DropDownList>
</EditItemTemplate>
</asp:DataList>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Province") %>'></asp:Label>
<asp:Button ID="Button1" runat="server" CommandName="edit" Text="编辑" />
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataSource='<%# DropDownList1_DataBind() %>'>
</asp:DropDownList>
</EditItemTemplate>
</asp:DataList>
复制内容到剪贴板
程序代码

/// <summary>
/// 编辑
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
protected void DataList1_Edit(object source, DataListCommandEventArgs e)
{
DataList1.EditItemIndex = e.Item.ItemIndex;
DataList1_DataBind();
}
/// <summary>
/// DropDownList1数据绑定
/// </summary>
protected string[] DropDownList1_DataBind()
{
string[] province = { "北京", "上海", "福建" };
return province;
}
/// 编辑
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
protected void DataList1_Edit(object source, DataListCommandEventArgs e)
{
DataList1.EditItemIndex = e.Item.ItemIndex;
DataList1_DataBind();
}
/// <summary>
/// DropDownList1数据绑定
/// </summary>
protected string[] DropDownList1_DataBind()
{
string[] province = { "北京", "上海", "福建" };
return province;
}
数据绑定问题是解决了,但新的问题又随之而来:怎么让原先的值处于选中状态?不然给编辑造成了一定的不便!要解决这个问题,就先得想办法获取到原先的值,尝试了多种方法都无法直接获取,最终,在EditItemTemplate放个隐藏的表单来解决:
复制内容到剪贴板
程序代码

<asp:DataList ID="DataList1" runat="server" DataKeyField="ID" OnEditCommand="DataList1_Edit">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Province") %>'></asp:Label>
<asp:Button ID="Button1" runat="server" CommandName="edit" Text="编辑" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("Province") %>' Visible="false"></asp:TextBox>
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</EditItemTemplate>
</asp:DataList>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Province") %>'></asp:Label>
<asp:Button ID="Button1" runat="server" CommandName="edit" Text="编辑" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("Province") %>' Visible="false"></asp:TextBox>
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
</EditItemTemplate>
</asp:DataList>
复制内容到剪贴板
程序代码

/// <summary>
/// 编辑
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
protected void DataList1_Edit(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
DataList1.EditItemIndex = e.Item.ItemIndex;
DataList1_DataBind();
//对DropDownList1进行数据绑定
string oldProvince = ((TextBox)DataList1.Items[e.Item.ItemIndex].FindControl("TextBox1")).Text;
string[] province = { "北京", "上海", "福建" };
DropDownList MyDropDownList = (DropDownList)DataList1.Items[e.Item.ItemIndex].FindControl("DropDownList1");
for (int i = 0; i < province.Length; i++)
{
MyDropDownList.Items.Add(new ListItem(province[i], province[i]));
if (MyDropDownList.Items[MyDropDownList.Items.Count - 1].Value == oldProvince)
{
MyDropDownList.SelectedIndex = MyDropDownList.Items.Count - 1;
}
}
}
/// 编辑
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
protected void DataList1_Edit(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
DataList1.EditItemIndex = e.Item.ItemIndex;
DataList1_DataBind();
//对DropDownList1进行数据绑定
string oldProvince = ((TextBox)DataList1.Items[e.Item.ItemIndex].FindControl("TextBox1")).Text;
string[] province = { "北京", "上海", "福建" };
DropDownList MyDropDownList = (DropDownList)DataList1.Items[e.Item.ItemIndex].FindControl("DropDownList1");
for (int i = 0; i < province.Length; i++)
{
MyDropDownList.Items.Add(new ListItem(province[i], province[i]));
if (MyDropDownList.Items[MyDropDownList.Items.Count - 1].Value == oldProvince)
{
MyDropDownList.SelectedIndex = MyDropDownList.Items.Count - 1;
}
}
}
评论: 0 | 引用: 0 | 查看次数: 7899
发表评论
请登录后再发表评论!