如题,怎么办啊?数据已经绑定好了,但是始终不能触发datalist里面的linkbutton的事件。

解决方案 »

  1.   

    例如:
    <asp:LinkButton id="lbtnFirst" CssClass="csslink" Text="首页" CommandName="First" runat="server" />
      

  2.   

    不行的。用了你们说的方法,不行,不能触发linkbutton的事件。后台也写了相应代码,中断跟踪,根本就没有执行到那个地方
      

  3.   

    前台部分代码:           <div id="div_content" style="overflow: auto; width: 800px; height: 340px">
                                                <asp:DataGrid ID="dtg_Body" runat="server" AutoGenerateColumns="False" ShowHeader="False" EnableViewState ="true" OnItemDataBound="dtg_Body_ItemDataBound">
                                                    <SelectedItemStyle CssClass="datagrid_selectedstyle"></SelectedItemStyle>
                                                    <ItemStyle CssClass="datagrid_itemstyle" HorizontalAlign="Center"></ItemStyle>
                                                    <Columns>                                          
                                                        <asp:TemplateColumn ItemStyle-Height="60px" ItemStyle-HorizontalAlign="center" ItemStyle-VerticalAlign="Top">
                                                            <ItemTemplate>
                                                              <asp:label runat="server" ID="lbl_Date1" Text='<%# DataBinder.Eval(Container, "DataItem.Date1") %>' ></asp:label>
                                                           <div runat="server" id="div21" style="overflow: auto; width: 100%;">
                                                          
                                                            <asp:DataList runat="server" ID="dl_TPTitle1" EnableViewState="true" >
                                                                 <ItemTemplate>
                                                                  
                                                                    <%# DataBinder.Eval(Container, "DataItem.TPDate","{0:h:m}")%>
                                                                   <asp:LinkButton runat="server" ID="lbtn_TP" Text='<%# DataBinder.Eval(Container, "DataItem.TPTitle") %>'  CommandName="ViewTP" ></asp:LinkButton>
                                                                <asp:TextBox runat="server" ID="txt_Status" Visible="false" Text='<%# DataBinder.Eval(Container, "DataItem.Status") %>'></asp:TextBox>
                                                              <asp:Label runat="server" ID="lbl_Month" Visible="true" Text='<%# DataBinder.Eval(Container, "DataItem.TPID") %>'></asp:Label>
                                                             
                                                            </ItemTemplate>                                        
                                                        </asp:DataList>    
                                                         </div>                     
                                                            </ItemTemplate>
                                                        </asp:TemplateColumn>
                                                       <asp:TemplateColumn ItemStyle-Height="60px" ItemStyle-HorizontalAlign="center" ItemStyle-VerticalAlign="Top">
                                                            <ItemTemplate>
                                                                <asp:label runat="server" ID="lbl_Date2" Text='<%# DataBinder.Eval(Container, "DataItem.Date2") %>' ></asp:label>
                                                                <div runat="server" id="div22" style="overflow: auto; width: 100%;">
                                                            <asp:DataList runat="server" ID="dl_TPTitle2" EnableViewState="False" >
                                                            <ItemTemplate>                                                         
                                                               <%# DataBinder.Eval(Container, "DataItem.TPDate", "{0:h:m}")%>                                                                      
                                                                   <asp:LinkButton runat="server" ID="lbtn_TP" Text='<%# DataBinder.Eval(Container, "DataItem.TPTitle") %>'   CommandName="ViewTP" ></asp:LinkButton>
                                                                <asp:TextBox runat="server" ID="txt_Status" Visible="false" Text='<%# DataBinder.Eval(Container, "DataItem.Status") %>'></asp:TextBox>
                                                              <asp:Label runat="server" ID="lbl_Month" Visible="false" Text='<%# DataBinder.Eval(Container, "DataItem.TPID") %>'></asp:Label>
                                                            
                                                            </ItemTemplate>                                        
                                                        </asp:DataList>    
                                                         </div>                
                                                            </ItemTemplate>
                                                        </asp:TemplateColumn>
                          </Columns>
                                                </asp:DataGrid>
                                            </div>
      

  4.   

    有人说用冒泡事件可以,但是我用ItemCreate冒泡,还是不能触发LinkButton事件
      

  5.   

    我刚写的,:),楼主看http://blog.csdn.net/sfbasic/archive/2007/04/06/1553922.aspx
      

  6.   

    看了你的文章,不过不能解决我的问题。嵌套后问题难度不一样了。DataGrid 里面嵌套 DataList, DataList里面的控件触发不了。在DataList外面的都可以触发。搞了三天了,还没有解决郁闷死了哪位高手 帮我啊
      

  7.   

    在DataList里ItemCreate方法里面.手动注册内部的控件事件.就行了.
      

  8.   

    试一下:private void dtg_Body_ItemCreated(object sender, DataGridItemEventArgs e)
       {        if (e.Item.ItemType.ToString() == "Item" || e.Item.ItemType.ToString() == "AlternatingItem")
            {            DataList TPTitle1 = (DataList)e.Item.FindControl("TPTitle1");              TPTitle1.ItemCommand += new DataGridCommandEventHandler(TPTitle1_ItemCommand);        }    }
     protected void TPTitle1_ItemCommand(object source, DataGridCommandEventArgs e)
        {//。
        }
      

  9.   

    楼上的方法和我说的是一样的,但是判断的时候,最好用下的判断
    if(e.Item.ItemType ==ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
      

  10.   

    哎,我试过好几次了,都不行,用断点跟踪,根本上就不去执行TPTitle1_ItemCommand();
      

  11.   

    TPTitle1.ItemCommand += new DataGridCommandEventHandler(TPTitle1_ItemCommand);这句有没有执行,PostBack 的时候,可能你没有DataBind(), 也就没有执行这行语句。
      

  12.   

    TPTitle1.ItemCommand += new DataGridCommandEventHandler(TPTitle1_ItemCommand);这句执行了,不执行
    protected void TPTitle1_ItemCommand(object source, DataGridCommandEventArgs e)
    {}
      

  13.   

    protected void TPTitle1_ItemCommand(object source, DataGridCommandEventArgs e)
    应该为:
    protected void TPTitle1_ItemCommand(object source, DataListCommandEventArgs e)
      

  14.   


        protected void dtg_Body_ItemCreated(object sender, DataGridItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                  for (int i = 1; i <= 7; i++)
                    {
                        DataList dl_TPTitle = new DataList();
                        dl_TPTitle = (DataList)e.Item.FindControl("dl_TPTitle" + i.ToString());
                      dl_TPTitle.ItemCommand += new DataListCommandEventHandler(dl_TPTitle_ItemCommand);ataBound);
                    }            
            }
        }注:在前台有7个datalist分别是:dl_TPTitle1 到dl_TPTitle7,所以用一个循环.protected void dl_TPTitle_ItemCommand(object sender, DataListCommandEventArgs e)
        {
            LinkButton lbtn_TP = new LinkButton();
            lbtn_TP = (LinkButton)e.Item.FindControl("lbtn_TP");
            if (e.CommandName == "ViewTP")
            {
                Label label = new Label();
                label = (Label)(e.Item.FindControl("lb_Month"));
                string strTPID = label.Text;
                ShowModalDialog("WeekAndMonthTask_Detail.aspx?TPID=" + strTPID, "280", "600", "btn_MRefresh");
            }
        }
    中断跟踪,dl_TPTitle_ItemCommand()就没有执行到.目的是,点击LinkButton里面的内容,弹出新窗口WeekAndMonthTask_Detail.asps谢谢
      

  15.   

    .....7个绑定到同一个方法上你在PageLoad的时候有没有判断IsPostBack,PostBack的时候也要绑定事件才行从简单的开始调试吧,先试一试一个DataList可不可行
    另外DataList dl_TPTitle = new DataList();
    dl_TPTitle = (DataList)e.Item.FindControl("dl_TPTitle" + i.ToString());
    改成
    DataList dl_TPTitle = (DataList)e.Item.FindControl("dl_TPTitle" + i.ToString());
    就可以
      

  16.   

    protected void dtg_Body_ItemCreated(object sender, DataGridItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                  for (int i = 1; i <= 7; i++)
                    {
                        DataList dl_TPTitle = new DataList();
                        dl_TPTitle = (DataList)e.Item.FindControl("dl_TPTitle" + i.ToString());
                      dl_TPTitle.ItemCommand += new DataListCommandEventHandler(dl_TPTitle_ItemCommand);
                    }            
            }
        }
      

  17.   

    实话告诉你吧,你用2003嵌套,就是没有事件。
    这是.net2003设计时就定了的,貌似没有解决办法。2005好了。
    又或者你试试自己做个委托挂接事件。
      

  18.   

    呵呵,我就是2005.不这样做了,太烦。用javascript算了