日期:2014-05-18  浏览次数:20392 次

请教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());
}


完整的例子
HTML code
<%@ 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>