代码如下:
<asp:DataList ID="DataList1" runat="server" Width="600px" OnItemCommand="DataList1_ItemCommand" OnItemDataBound="DataList1_ItemDataBound">
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Visible="false" Text='<%# Eval("M_Name") %>'></asp:Label>
<asp:TextBox ID="txtReply" Width="150px" Height="40px" runat="server"></asp:TextBox> <br />
<asp:Button ID="Button1" CssClass="btn_2k3" runat="server" Text="确定" OnClick="Button1_Click" />
</ItemTemplate>
</asp:DataList>
需求:点击按钮,得到文本框里的值,然后根据label里的名字保存到数据库。
但是我貌似逻辑出现错误,双击了Button激活了它的点击事件,结果在Button1_Click()事件里始终找不到Label和TextBox;
现在我想在DataList 的 ItemCommand 事件或者是 ItemDataBound事件里实现此功能,要怎么做,是不是跟GridView 的RowDataBound 和RowCommand 很像?请各位大虾解惑~
<asp:DataList ID="DataList1" runat="server" Width="600px" OnItemCommand="DataList1_ItemCommand" OnItemDataBound="DataList1_ItemDataBound">
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Visible="false" Text='<%# Eval("M_Name") %>'></asp:Label>
<asp:TextBox ID="txtReply" Width="150px" Height="40px" runat="server"></asp:TextBox> <br />
<asp:Button ID="Button1" CssClass="btn_2k3" runat="server" Text="确定" OnClick="Button1_Click" />
</ItemTemplate>
</asp:DataList>
需求:点击按钮,得到文本框里的值,然后根据label里的名字保存到数据库。
但是我貌似逻辑出现错误,双击了Button激活了它的点击事件,结果在Button1_Click()事件里始终找不到Label和TextBox;
现在我想在DataList 的 ItemCommand 事件或者是 ItemDataBound事件里实现此功能,要怎么做,是不是跟GridView 的RowDataBound 和RowCommand 很像?请各位大虾解惑~
protected void Button1_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
int index = ((DataListItem)(btn.NamingContainer)).ItemIndex;//获得行号
string lab = ((Label)DataList1.Items[index].FindControl("lblName")).Text;//获得Label值
string txt = ((TextBox)DataList1.Items[index].FindControl("txtReply")).Text;//获得TextBox值
//保存到数据库
//................
}
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Tim演示 </title>
</head>
<body >
<form id="form1" runat="server">
<div>
<asp:DataList ID="DataList1" runat="server" Width="600px" >
<ItemTemplate >
<asp:Label ID="lblName" runat="server" Text='<%#Eval("ID")%>' ></asp:Label>
<asp:TextBox ID="txtReply" Width="150px" Height="40px" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="确定" OnClick="Button1_Click" />
</ItemTemplate>
</asp:DataList>
</div>
</form>
</body>
</html>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
for (int i = 0; i < 10; i++)
{
dt.Rows.Add(i);
}
DataList1.DataSource = dt;
DataList1.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
DataListItem dl = (sender as Button).Parent as DataListItem;
Label l = dl.FindControl("lblName") as Label;
TextBox tb = dl.FindControl("txtReply") as TextBox;
int m = Convert.ToInt32(l.Text) + Convert.ToInt32(tb.Text);
ScriptManager.RegisterStartupScript(this, this.GetType(), "", "alert(" + m + ")", true);
}