none
怎么获得Datalist控件里面的值 RRS feed

  • 常规讨论

  •  <asp:DataList ID="DataList1" runat="server" DataSourceID="LinqDataSource1">
            <ItemTemplate>
                <div ID="pro_title">
                    <asp:Label ID="CPNAMELabel" runat="server" Text='<%# Eval("CPNAME") %>' />
                </div>
                <div id="pro_img">
                <img src="images/product/<%# Eval("BIMG") %>" width="200px" height="216px"/>
                </div>
                <div id="pro_text">
                <ol>
                <li>产品编号: <asp:Label ID="CPIDLabel" runat="server" Text='<%# Eval("CPID") %>' /></li>
                <li>产品分类: <asp:Label ID="CPFLIDLabel" runat="server" Text='<%# CPFLstr(Eval("FLID")) %>' /></li>
                <li>产品规格: <asp:Label ID="CPCCLabel" runat="server" Text='<%# Eval("CPCC") %>' /></li>
                <li>单价:<asp:Label ID="CPDJLabel" runat="server" Text='<%# Eval("CPDJ") %>' />元</li>
                <li><asp:Button ID="CPB" runat="server" ForeColor="#284E98"
                        Text='购买' onclick="CPB_Click"/></li>
                </ol>
                </div>
                <DIV class="solution_txt">
                    <asp:Label ID="contentsLabel" runat="server" Text='<%# Eval("contents") %>' />
                </div>
            </ItemTemplate>
       
        </asp:DataList>

    当我点击"购买"按钮时,怎么获得DataList里面的值

    我看到其它控件是这么写的,但是不对,麻烦改正一下,谢谢

    protected void CPB_Click(object sender, EventArgs e)
        {
            Label Mylabel;
            DataRow Myrow = Cpdt.NewRow();//存储购物车新行对象
            Mylabel = (Label)e.Item.FindControl("CPIDLabel");//商品编号
            Myrow["CPID"] = Convert.ToInt32(Mylabel.Text);
            Mylabel = (Label)e.Item.FindControl("CPNAMELabel");//商品名称
            Myrow["CPNAME"] = Mylabel.Text;
            Mylabel = (Label)e.Item.FindControl("CPDJLabel");//单价
            Myrow["CPDJ"] = Convert.ToDouble(Mylabel.Text);
            Myrow["SL"] = 1;//商品数量
            Myrow["CPSUM"] = Myrow["CPDJ"];//总计
            Cpdt.Rows.Add(Myrow);
            Response.Redirect("buycar.aspx");
        }

    • 已编辑 阿波 2012年5月10日 2:01
    • 已移动 Bob Shen 2012年5月11日 5:13 (发件人:Visual C#)
    2012年5月10日 1:56

全部回复

  • Hi 阿波,

    欢迎来到MSDN论坛。

    我把该帖移到了asp.net论坛已获得更好的反馈,谢谢理解!


    Bob Shen [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月11日 5:14
  • 一般我都是会设定Button的CommandName为Select之后,于DataList的SelectedIndexChanged事件中以下列程序代码来取得DataList控件中其他控件的内容,我以Northwind为例,上述概念的程序代码如下,希望对你有帮助。

    protected void DataList1_SelectedIndexChanged(object sender, EventArgs e)
    {
    	string dataKey = DataList1.DataKeys[DataList1.SelectedIndex].ToString();
    	Label RegionIDLabel = DataList1.Items[DataList1.SelectedIndex].FindControl("RegionIDLabel") as Label;
    	Label RegionDescriptionLabel = DataList1.Items[DataList1.SelectedIndex].FindControl("RegionDescriptionLabel") as Label;
    	Response.Write(string.Format("{0},{1},{2}", dataKey, RegionIDLabel.Text, RegionDescriptionLabel.Text));
    }


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年5月11日 7:33
  • 您不能对您自己的帖子投票

    终于找到原因了.这个事件它去获取的是ItemTemplate标签里面的ID为"CPIDLabel"的值,我正好把这个ID给删除了.得不到值.

    <ItemTemplate><asp:Label ID="CPIDLabel" runat="server" Text='<%# Eval("CPID") %>' 
                            Visible="False" />
    </ItemTemplate>

    好像ListView控件还要取<AlternatingItemTemplate>标签里面的里面的ID为"CPIDLabel"的值嘛.
    <AlternatingItemTemplate><asp:Label ID="CPIDLabel" runat="server" Text='<%# Eval("CPID") %>' 
                            Visible="False" />
    </ItemAlternatingItemTemplate

    经验啊,教训啊.
    2012年5月16日 13:58