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就行了。 2个窗体的调用 各位大大 datagridview 怎么设置默认选择第2行 我想在webbroser上添加一个透明控件 关于反射问题 C#如何实现xml的查找与替换 c#中,如果我要表示一个巨长的二进制数,如何表示? C#中 TreeView如下问题,该如何解决啊!!! 为啥VS2008里没有DataContractJsonSerializer类? 谁有 wrox 《c# Threading HandBook >>源代码 ? 高分相赠 (尤其是湖南老乡帮忙拉) 如何用程序改变报表中text的文本?(C#) 循环用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就行了。