请教datalist问题
<asp:DataList ID="DataList1" runat="server" RepeatColumns="5" RepeatDirection="Horizontal"
OnSelectedIndexChanged="DataList1_SelectedIndexChanged">
<ItemTemplate>
<table>
<tr>
<td>
<%#DataBinder.Eval(Container.DataItem,"MGood")%>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
想要在列表点击MGood的项目时DataList1_SelectedIndexChanged事件返回项目的值
列表如:
A B E
E C J
点击J时返回J
[解决办法]
你应该
<asp:DataList ID="DataList1" runat="server" RepeatColumns="5" RepeatDirection="Horizontal"
OnSelectedIndexChanged="DataList1_SelectedIndexChanged" DataKeyField="MGood" >
protected void DataList1_SelectedIndexChanged(object sender, EventArgs e)
{
Response.Write(DataList1.DataKeys[DataList1.SelectedIndex].ToString());
}
完整的例子
<%@ Page Language="C#" AutoEventWireup="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"> protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { String[] x = { "A", "B", "C", "D", "E", "F", "G", "H", "J" }; System.Data.DataTable dataTable1 = new System.Data.DataTable(); System.Data.DataRow dr; dataTable1.Columns.Add(new System.Data.DataColumn("ID", typeof(System.Int32))); dataTable1.Columns.Add(new System.Data.DataColumn("MGood", typeof(System.String))); for (int i = 0; i < 9; i++) { dr = dataTable1.NewRow(); dr[0] = i; dr[1] = x[i]; dataTable1.Rows.Add(dr); } DataList1.DataSource = dataTable1; DataList1.DataBind(); } } protected void DataList1_SelectedIndexChanged(object sender, EventArgs e) { Response.Write(DataList1.DataKeys[DataList1.SelectedIndex].ToString()); }</script><html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat="server"> <title></title> <style type="text/css">a{text-decoration:none;}</style></head><body> <form id="form1" runat="server"> <asp:DataList ID="DataList1" runat="server" RepeatColumns="5" RepeatDirection="Horizontal" OnSelectedIndexChanged="DataList1_SelectedIndexChanged" DataKeyField="MGood"> <ItemTemplate> <table> <tr><td> <asp:LinkButton ID="lnkSelect" runat="server" CommandName="Select"><%#Eval("MGood")%></asp:LinkButton> </td></tr> </table> </ItemTemplate> </asp:DataList> </form></body></html>