前台
      <asp:DataList ID="DataList1" runat="server" HorizontalAlign="Center" 
            RepeatColumns="3" RepeatDirection="Horizontal" Width="1100px">
        <ItemTemplate>
            <table class="style1">
                <tr>
                    <td class="style2" rowspan="4">
                        <asp:Image ID="Image1" runat="server" 
                            ImageUrl='<%# "~/bookimag/"+Eval("imagename") %>' />
                    </td>
                    <td>
                        书名:<asp:Label ID="bname" runat="server" Text='<%# Eval("bookname") %>' />
                    </td>
                </tr>
                <tr>
                    <td>
                        作者:<asp:Label ID="author" runat="server" Text='<%# Eval("author") %>' />
                    </td>
                </tr>
                <tr>
                    <td>
                        出版社:<asp:Label ID="pcompany" runat="server" 
                            Text='<%# Eval("publishcompany") %>' />
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:Button ID="rdbutton" runat="server"  
                            Text="点击阅读" onclick="rdbutton_click" />
                            <asp:Label ID="bkID" runat="server" 
                            Text='<%# Eval("bookID") %>' Visible="False" />
                    </td>
                </tr>
            </table>
                             
        </ItemTemplate>
        </asp:DataList>后台public partial class bookread_newbook : System.Web.UI.Page
{
    public void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string consql = System.Configuration.ConfigurationManager.ConnectionStrings["BookftConnectionString"].ConnectionString;
            SqlConnection conne = new SqlConnection(consql);
            conne.Open();
            SqlDataAdapter da = new SqlDataAdapter();
            SqlCommand selectCmd = new SqlCommand();
            selectCmd.Connection = conne;
            selectCmd.CommandText = "select * from bookinformation";
            da.SelectCommand = selectCmd;
            DataSet data = new DataSet();
            da.Fill(data, "books");
           
            DataList1.DataSource = data.Tables["books"];
            DataList1.DataBind();
            conne.Close();        }    }
    protected void rdbutton_click(object sender, EventArgs e)
    {
        
        foreach (DataListItem item in DataList1.Items) ;
        {
           Label bkid= (Label)item.FindControl("bkID");
           Session["bookID"] = bkid.Text;
           Response.Redirect("mulu.aspx");我在Datalist中放了一个Button控件 想实现的功能是点击Button获取该索引行的BookID出现的错误是: 谢了 各位大神

解决方案 »

  1.   

    晕  图片挂了
    用说的吧~~错误为:   上下文中找不到局部变量item 
      

  2.   


    <asp:DataList ID="DataList1" runat="server" HorizontalAlign="Center" RepeatColumns="3"
                RepeatDirection="Horizontal" Width="1100px" 
                onitemcommand="DataList1_ItemCommand">
                <ItemTemplate>
                    <table class="style1">
                        <tr>
                            <td class="style2" rowspan="4">
                                <asp:Image ID="Image1" runat="server" ImageUrl='<%# "~/bookimag/"+Eval("imagename") %>' />
                            </td>
                            <td>
                                书名:<asp:Label ID="bname" runat="server" Text='<%# Eval("bookname") %>' />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                作者:<asp:Label ID="author" runat="server" Text='<%# Eval("author") %>' />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                出版社:<asp:Label ID="pcompany" runat="server" Text='<%# Eval("publishcompany") %>' />
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <asp:Button ID="rdbutton" runat="server" Text="点击阅读" CommandName="read" CommandArgument='<%# Eval("bookID") %>' />
                            </td>
                        </tr>
                    </table>
                </ItemTemplate>
            </asp:DataList>    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandName == "read")
            {
                //获取BookID
                int BookID = Convert.ToInt32(e.CommandArgument);
            }
        }
      

  3.   


    我将你的代码替换进去了~然后修改了一下,目的是测试获取的BookID值
     protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandName == "read")
            {
                //获取BookID
                int BookID = Convert.ToInt32(e.CommandArgument);            TextBox1.Text = BookID.ToString();
              
            }
        }结果运行界面Text.box值为空~555555555555555555555555555555555
      

  4.   

    设置个断点,调试下。 看看BookID取出的值是多少。如果是某个数值,可能是界面上其它地方的代码影响了TextBox1的显示。
      

  5.   

    运行结果如下~注意TextBOX为空
      

  6.   

    <asp:Button ID="rdbutton" runat="server" Text="点击阅读" CommandName="read" CommandArgument='<%# Eval("bookID") %>' />
    替换没?bookID 是不是数值型的?
      

  7.   

     protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandName == "read")
            {
                //获取BookID
                string BookID = Convert.ToString(e.CommandArgument);            TextBox1.Text = BookID;
              
            }
        }
      

  8.   


    用button不行,
    要用
    <a href="default.aspx?id=<%#Eval('ID')%>">阅读</a>
      

  9.   

    foreach (DataListItem item in DataList1.Items) ;
            {
               Label bkid= (Label)item.FindControl("bkID");
               Session["bookID"] = bkid.Text;你这样写得到的永远是第一条的啊
      

  10.   

    你应该这样写
    protected void rdbutton_click(object sender, EventArgs e)
    {
     Label lb = (sender as Button).NamingContainer.FindControl("bkID") as Label;
     if(lb!=null)
      Response.Redirect("mulu.aspx?id=" + lb.Text);
    }