<asp:datalist id="dltserviceinfo" runat="server" EnableViewState="False">
<ItemTemplate>
<TABLE style="FONT-SIZE: 12px; WORD-BREAK: break-all; WORD-WRAP: break-word">
<TR>
<TD width="348"><B>
<asp:LinkButton id="btn" CommandName="lbtn" Text='<%# FL28.Func.myString.strGetUrl(DataBinder.Eval(Container.DataItem, "topic"),DataBinder.Eval(Container.DataItem,"Url"),DataBinder.Eval(Container.DataItem,"XID")) %>' Runat="server">
</asp:LinkButton></B>
<asp:Label ID="lb1" Text='<%# DataBinder.Eval(Container.DataItem,"XID") %>' Visible=False>
</asp:Label>
</TD>
DataList控件中有很多信息,现在想法是再加入一个信息,显示点击量的多少。但是有一些链接需要连接到别的网站上,所以点击量增加的方法只能是在点击LinkButton后就触发。然后把点击量的数值+1再存到数据库中。
现在的问题是,不知道该如何在DataList控件中调用LinkButton按钮的OnClick事件。请各位高手帮帮忙吧!

解决方案 »

  1.   

    在后台写一个 public 级别的事件函数
    在DATALIST 中就可以给LINKBUTTON 添加单击事件了  onclick="GetNums"
      

  2.   

    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
            {
                if (e.CommandName = "lbtn")
                { 
                }
            }
      

  3.   

    private void grdKnowledgeList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
    {
    LinkButton Link1=(LinkButton)e.Item.FindControl("lbnArtModify");
    LinkButton Link2=(LinkButton)e.Item.FindControl("lbnArtDelete");
    if(e.Item.Cells[2].Text.Trim()==m_strStaffNo)
    {
    Link1.Visible=true;
    Link2.Visible=true;
    }
    if(this.CheckAuth("Knowledge","0").Substring(10,1)=="1")
    {
    Link2.Visible=true;


    }
    } }
      

  4.   

    this.btn.Attributes.Add("onclick","事件");
      

  5.   

    <asp:TemplateColumn HeaderText="删除">
    <ItemStyle HorizontalAlign="Center" Width="40px"></ItemStyle>
    <ItemTemplate>
    <asp:LinkButton id="btnDelete" CommandName="delete" Runat="server">删除</asp:LinkButton>
    </ItemTemplate>
    </asp:TemplateColumn>
    上面是HTML代码里DATAGRID加 linkbutton
    下面是调用CS代码
    private void feiQiGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    string strBCNO=e.Item.Cells[0].Text;
    this.deleteData(strBCNO);
    }
    因为CommandText是delete所以执行的是DataGrid的DeleteCommand
      

  6.   

    private void dltserviceinfo_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
        if(e.CommandName=="lbtn")//等于LinkButton的CommandName时,表示点击LinkButton
       {
          //相关处理
        }
    }
      

  7.   

    后台的代码现在是这个样的:
    private void dltserviceinfo_ItemCommand(object source,System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
    if(e.CommandName=="btn")
    {
    LinkButton lbtn = (LinkButton)e.Item.FindControl("btn");
    lbtn.Attributes.Add("onclick",这里需要传递给OnClick事件一个参数);");
    }
    我想问一下我的OnClick事件应该写在什么地方?前台还是后台?   
    }
      

  8.   

    后台cs文件中定义个onlick函数即可
      

  9.   

    我想问一下我的OnClick事件应该写在什么地方?前台还是后台?   
    ----------------
    private void dltserviceinfo_ItemCommand(object source,System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
    if(e.CommandName=="btn")
    {
                  click事件直接写在这里
    }
    }
      

  10.   

    如下也行:
    private void dltserviceinfo_ItemCommand(object
    source,System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
    if(e.CommandName=="btn")
    {
    LinkButton lbtn = (LinkButton)e.Item.FindControl("btn");
    lbtn.OnClick += new System.EventHandler(onlick);
    }void onlick()
    {}
      

  11.   

    kbxj406我用了你的方法但是提示我有错误
    “System.Web.UI.WebControls.LinkButton.OnClick(System.EventArgs)”,因为它受保护级别限制
    private void dltserviceinfo_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
    if(e.CommandName=="btn")
    {
             LinkButton lbtn = (LinkButton)e.Item.FindControl("btn");
    lbtn.OnClick += new System.EventHandler(OnClick);  
    }
    }
    public void OnClick()
    {
    Label1.Visible=true;
    }
      

  12.   

    jc15271149(嘿咻) 
    用了您的方法还是不能调用阿。我用一个Label实验,点击lbtn以后显示Label,但是还不能实现
      

  13.   

    "后台的代码现在是这个样的:
    private void dltserviceinfo_ItemCommand(object source,System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
    if(e.CommandName=="btn")
    {
    LinkButton lbtn = (LinkButton)e.Item.FindControl("btn");
    lbtn.Attributes.Add("onclick",这里需要传递给OnClick事件一个参数);");
    }"
    if(e.CommandName=="btn")应改为if(e.CommandName=="lbtn")
      

  14.   

    click直接在if(e.CommandName=="lbtn")里面就可以了
      

  15.   

    我在前台的代码里定义的CommandName="btn"
    这地方怎么能用if(e.CommandName=="lbtn")?
      

  16.   

    <asp:LinkButton id="btn" CommandName="lbtn" Text='<%# FL28.Func.myString.strGetUrl(DataBinder.Eval(Container.DataItem, "topic"),DataBinder.Eval(Container.DataItem,"Url"),DataBinder.Eval(Container.DataItem,"XID")) %>' Runat="server">
    以为你用这个
      

  17.   

    上面的人都说完了,没什么可说了,呀
    fondcontrol找到控件,再添加你要的事件
      

  18.   

    kbxj406我用了你的方法但是提示我有错误
    “System.Web.UI.WebControls.LinkButton.OnClick(System.EventArgs)”,因为它受保护级别限制
    private void dltserviceinfo_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
    if(e.CommandName=="btn")
    {
             LinkButton lbtn = (LinkButton)e.Item.FindControl("btn");
    lbtn.OnClick += new System.EventHandler(OnClick);  
    }
    }
    public void OnClick()
    {
    Label1.Visible=true;
    }把OnClick改成onclick,大写会被认为是系统定义的那个
      

  19.   

    <asp:DetailsView ID="DetailsView1" runat="server" Height="122px" Width="383px" AutoGenerateRows="False">
            <Fields>
                <asp:TemplateField>
                  <ItemTemplate>
                    <asp:LinkButton ID="lbEdit" runat="server" CausesValidation="False" CommandName="Edit"
                                                        Text="修改"></asp:LinkButton>
                  </ItemTemplate>
                </asp:TemplateField>
            </Fields>
        
        </asp:DetailsView>
    这样linkButton 会触发protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
        {
            switch(e.CommandName)
             {
                case"Edit":
                       onClick事件........
                   break;          }
        }
      

  20.   

    好像只有自带的ButtonColumn,EditCommandColumn用
    switch(e.CommandName)
             {
                case"Edit":
                       onClick事件........
                   break;          }
    这种方法才能起作用。
      

  21.   

    写再前台后台都一样, .aspx页面继承自 .aspx.cs,当然,写再前台可以private,后台至少要 protected 才可以访问
      

  22.   

    kbxj406(羽儿)
    我用OnClick说我受限制,用onclick说不包含定义
      

  23.   

    前台:   
     <asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand">
        <ItemTemplate>
            <asp:LinkButton ID="LinkButton1" CommandName="lbn" runat="server">LinkButton</asp:LinkButton></ItemTemplate>
        </asp:DataList>后台:
        protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandName == "lbn")
            { 
              //code
            }
        }注意:前台的CommandName  最好回避一些关键字,如 delete   update,否则会出错(有时候)
      

  24.   

    我也做了一下实验
    private void dltserviceinfo_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
    if(e.CommandName=="btn")
    {
             LinkButton lbtn = (LinkButton)e.Item.FindControl("btn");
    lbtn.OnClick += new System.EventHandler(OnClick);  
    }
    }
    public void OnClick()
    {
    Label1.Visible=true;
    }把OnClick改成onclick,大写会被认为是系统定义的那个
    这样写 在public void OnClick()括号里是不是应该有参数
    因为上面的定义要有参数传入  摆脱大虾们 写个完整版的谢了~
      

  25.   

    给一个我做过项目的例子,前后台代码如下啊:
    前台代码:
    <asp:DataList ID="DLNewCompany" runat="server" RepeatColumns="1"
                            Width="100%">
                            <ItemTemplate>
                                <asp:LinkButton ID="editBtn3" runat="server" CommandArgument='<%# Eval("ID", "{0}")%>'
                                    Text='<%#substring9(Eval("ComName")) %>' OnCommand="editBtn3_Command"></asp:LinkButton>
                                <asp:Label ID="Label19" runat="server" Text='<%#substring7(Eval("ReleaseTime"))%>'></asp:Label>
                            </ItemTemplate>
                        </asp:DataList>
    后台代码: protected void editBtn3_Command(object sender, CommandEventArgs e)
        {
            int CompanyID = Convert .ToInt32(e.CommandArgument.ToString());
            Response.Redirect("DetailHomemakingCompany.aspx?CompanyID=" + CompanyID);
        }