回答你的第二问:
<asp:DataList id="DataList1" runat="server">
<ItemTemplate>
<asp:Button id="Button2" runat="server" Text="Button" onClick="getName">
</asp:Button>
</ItemTemplate>
</asp:DataList>
在后台写:
  public void getName(object sender, System.EventArgs e)
{  //你的代码;
}
//备注;
  方法一定要声明为public; onClick的调用格式; 
finished; good luck;

解决方案 »

  1.   

    我试试看,问题是还要用到一些itemtemplate里面的其他绑定好的label,但他们又没有声明的,在.cs里面
      

  2.   

    出错误了
    Compiler Error Message: CS0123: Method 'MjmWebUI.Forum.k_showarticle.del_forumre(object, System.EventArgs)' does not match delegate 'void System.Web.UI.ImageClickEventHandler(object, System.Web.UI.ImageClickEventArgs)'Source Error: Line 70:  height="240" alt="" src="file:///F:\project\mjm\B2C\MjmB2CProject\WebUIProjects\MjmWebUI\Images\ProductSmallImgs\bar3-2.gif"
    Line 71:  width="4">
    Line 72:  <asp:ImageButton id="delete" style="Z-INDEX: 109; LEFT: 168px; POSITION: absolute; TOP: 248px" runat="server"
    Line 73:  OnClick="del_forumre" ImageUrl="file:///F:\project\mjm\B2C\MjmB2CProject\WebUIProjects\MjmWebUI\Images\ProductSmallImgs\Delete.gif"
    Line 74:  Width="16px" Height="16px" CommandName="ItemCommand"></asp:ImageButton>
     Source File: http://localhost/MjmWebUI/Forum/k_showarticle.aspx    Line: 72 
      

  3.   

    好了,System.EventArgs改成System.Web.UI.ImageClickEventArgs就没有错误了
      

  4.   

    DataList 的 ItemCommand 和它到底有哪项被选中是没有关系的。
    因为SelectedIndex是要自己设置的.
      

  5.   

    ok; 你的问题easy; 我已经帮你搞定;(代码片断,你try try see);
    其实,ms的help里有例子;(千万别说你看不懂 ^_^) 
    -----前台-----
    <asp:textbox id="TextBox1" runat="server" Height="24px" Width="112px">
    <asp:datalist id="DataList1" runat="server" Width="208px" BorderColor="#999999" BorderStyle="Solid"
    ForeColor="Black" BackColor="White" CellPadding="3" GridLines="Vertical" BorderWidth="1px">
    <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#000099"></SelectedItemStyle>
    <AlternatingItemStyle BackColor="#CCCCCC"></AlternatingItemStyle>
    <ItemTemplate>
    <asp:Label id=lb_test Text="<%# Container.DataItem %>" Runat="server">
    </asp:Label>
    <asp:Button id="Button2" runat="server" Text="Button" OnClick="getName"></asp:Button>
    </ItemTemplate>
    <FooterStyle BackColor="#CCCCCC"></FooterStyle>
    <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="Black"></HeaderStyle>
    </asp:datalist>
    -----------后台-------------------------
    private void BindDataList()
    {
    string[] sArr=new string[10];
    for(int i=0; i<10 ; i++)
    sArr[i]=i.ToString();
    this.DataList1.DataSource = sArr;
    this.DataList1.DataBind();
    }public void getName(object sender, System.EventArgs e)
    {
    Response.Write("<script language=javascript>alert('you cliked me');</script>");
    }private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if(!Page.IsPostBack)
    BindDataList();
    }
    private void DataList1_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
    this.TextBox1.Text =  e.Item.ItemIndex.ToString();
    }
      

  6.   

    要睡了,希望你 解决了; 我已经‘黔驴技穷’; sorry
      

  7.   

    问题是我的this.TextBox1.Text =  e.Item.ItemIndex.ToString();有问题,我的e.后面出不来item
      

  8.   

    还有,如果我要调用那个Label id=lb_test 的内容,又该怎么做呢,应为我看不到他的定义阿
      

  9.   

    1:问题是我的this.TextBox1.Text =  e.Item.ItemIndex.ToString();有问题,我的e.后面出不来item
    ------
     在 ItemCommand的事件中;不可能没有;
    ------
    2:我只能得到button的Text; Label 是动态绑定数据的;我今天只能得到它的ID,得不到值;
    this.TextBox3.Text=this.DataList1.Items[0].Controls[1];
    因为button是静态的;因此能得到它的Text;
     this.TextBox3.Text=((Button)this.DataList1.Items[0].Controls[3]).Text;
    ---------
    sorry; 明天有时间再 解决吧;其实我的工作中也没有解决;是用了变通的方法;希望明天我或别人能帮你解决; 
      

  10.   

    sorry; 如果模板列中的label 换为 TextBox的话,我能帮你取出值,但,label就不行了;我看来客户端代码; label最后转换为<span></span>标记了; 可能是这个原因吧;
    ---------解决方法--第二问----------------
    前台的Label 替换为 TextBox;
    --------
    private void DataList1_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
      int index = e.Item.ItemIndex;
      this.TextBox1.Text = index.ToString();
      this.TextBox2.Text = this.DataList1.Items[index].Controls[1].ClientID;
      this.TextBox3.Text = ((TextBox)this.DataList1.Items[index].Controls[1]).Text;
    }
      

  11.   

    现在我有点明白了
    item 是指我点击的按钮所在的那个单元,items[].controls[]才指的是单元里的控件,对么
    我还有一点不清楚的是,controls[int index]后面的index怎么确定,就是我怎么知道单元里每个控件的index呢,哪里可以设置么
      

  12.   

    好像是拿不到label 的text,不知道为什么,监控中看到的值就是空的,但是网页上出来时有值存在的!