当前位置:编程学习 > C#/ASP.NET >>

DataList?

在DataList中选择ItemTemplate模版然后在里放入一个button按钮我想点击button按钮后执行EditItemTempate模版的内容?也就是怎么从ItemTemplate转到EditItemTempate? --------------------编程问答-------------------- 在DataList的ItemCommand事件中设置DataList1.EditItemIndex = e.Item.ItemIndex;再重新查询数据库,绑定一下DataList。

--------------------编程问答-------------------- 参考示例:
	<asp:DataList ID="DataList1" runat="server" onitemcommand="DataList1_ItemCommand">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%#Eval("姓名") %>'></asp:Label>
<asp:Button ID="Button1" runat="server" Text="编辑" CommandName="Edit" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("姓名") %>'></asp:TextBox>
<asp:Button ID="Button2" runat="server" Text="确定"></asp:Button>
</EditItemTemplate>
</asp:DataList>

	protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindDataList1();
}

private void BindDataList1()
{
SqlCeData md = new SqlCeData();
DataTable dt = md.FillDataTable("select * from 学生信息");
md.Close();
DataList1.DataSource = dt;
DataList1.DataBind();
}

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "Edit")
{
DataList1.EditItemIndex = e.Item.ItemIndex;
BindDataList1();
}
}

其中SqlCeData为数据库操作类,你换成原生的ADO.NET代码即可。 --------------------编程问答-------------------- 这个是一个完整的示例,从编辑到更新回数据库:
	<asp:DataList ID="DataList1" runat="server" DataKeyField="学号" OnItemCommand="DataList1_ItemCommand">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%#Eval("姓名") %>'></asp:Label>
<asp:Button ID="Button1" runat="server" Text="编辑" CommandName="Edit" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("姓名") %>'></asp:TextBox>
<asp:Button ID="Button2" runat="server" Text="确定" CommandName="Update"></asp:Button>
</EditItemTemplate>
</asp:DataList>

	protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
BindDataList1();
}

private void BindDataList1()
{
SqlCeData md = new SqlCeData();
DataTable dt = md.FillDataTable("select * from 学生信息");
md.Close();
DataList1.DataSource = dt;
DataList1.DataBind();
}

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
switch (e.CommandName)
{
case "Edit":
DataList1.EditItemIndex = e.Item.ItemIndex;
BindDataList1();
break;
case "Update":
TextBox tb = e.Item.FindControl("TextBox1") as TextBox;
SqlCeData md = new SqlCeData();
md.ExecuteNonQuery("update 学生信息 set 姓名=@姓名 where 学号=@学号", "@姓名", tb.Text.Trim(), "@学号", DataList1.DataKeys[e.Item.ItemIndex].ToString());
md.Close();
DataList1.EditItemIndex = -1;
BindDataList1();
break;
}
}

假定数据表内只有“学号”和“姓名”两个字段,“学号”为主键。你要改写的是数据库操作类这块代码,改成ado.net就行了。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,