2013-08-16 75 views
0

我有一個Datalist,在itemtemplate內部,我有兩個標籤和一個按鈕。 我想檢索datalist行的行數據。Asp.Net:從Datalist中檢索行數據,使用Datalist中的buttoncontrol

我的.aspx頁面中爲:

<asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand"> 
    <HeaderTemplate> 

    </HeaderTemplate> 
    <ItemTemplate> 
     <table width="100%"> 
      <tr> 
       <td> 
        <asp:Label ID="lblid11" runat="server" Text='<%#Eval("SubMenu_Id") %>' /> 
       </td> 
       <td> 
        <asp:Label ID="lblid12" runat="server" Text='<%#Eval("SubMenu_Name") %>' /> 
       </td> 
       <td> 
        <asp:Label ID="lblid13" runat="server" Text='<%#Eval("SubMenu_Price") %>' /> 
       </td> 
       <td> 
        <asp:Button ID="btninside" runat="server" CommandName="call" Text="click me" onclick="btninside_Click" /> 
       </td> 
      </tr> 
     </table> 
    </ItemTemplate> 

</asp:DataList> 

和我.CS頁面

public partial class Datalist_Button : System.Web.UI.Page 
{ 
    string s = WebConfigurationManager.ConnectionStrings["FoodPlanetConnectionString"].ConnectionString; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      BindDataList(); 
     } 
    } 

    public void BindDataList() 
    { 
     SqlConnection con = new SqlConnection(s); 
     con.Open(); 
     SqlCommand cmd = new SqlCommand("Select * from Menu", con); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataSet ds = new DataSet(); 
     da.Fill(ds); 
     DataList1.DataSource = ds; 
     DataList1.DataBind(); 
     con.Close(); 
    } 

    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 
    { 
     if (e.CommandName == "call") 
     { 
      DataListItem item = (DataListItem)(((Button)(e.CommandSource)).NamingContainer); 
      string text = ((Label)item.FindControl("lblid12")).Text; 
     } 

    } 

pleae幫助我,我的代碼是不工作

+0

你應該告訴人們你得到了什麼樣的錯誤。 「代碼不起作用」可能意味着任何事情。 – ciruvan

回答

0

試試這個。

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 
    { 
     if (e.CommandName == "call") 
     { 
      string text = ((Label)DataList1.Items[e.Item.ItemIndex].FindControl("lblid12")).Text; 
     } 
    }