DataList? 在DataList中选择ItemTemplate模版然后在里放入一个button按钮我想点击button按钮后执行EditItemTempate模版的内容?也就是怎么从ItemTemplate转到EditItemTempate? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在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就行了。 问个批量上传的问题 无法将类型"byte[]"隐式转换为"byte"!!! 请问this加在方法形参的前面做修饰是什么意思 C#使用正则去掉a标记的问题 使用DirectoryEntry控制IIS的问题 WPF中如何取出listBox中选中项的Tag值? 请教:关于.net 2.0里的Properties.Settings用法 请问怎么在C#.net里 跳出提示框 例如 跳出"用户名错误"的提示框 请教在.aspx页面打开时,如何屏蔽treeview中的一个节点 可否在程序中实现自动登录? 循环用new 申请的数组空间 的释放问题 在c#中, 使用键值对存储数据的是
<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就行了。