Asp.net用户控件项命令事件未触发

时间:2013-11-08 01:29:17

标签: asp.net vb.net

我有一个用户控件的页面。

页面数据网格绑定列从用户控件填充(用户控件具有数据网格,其项目采用项目模板的形式)。

此用户控件有一列包含编辑保存取消按钮。

用户控件还有其他列,这些列是复选框,内部是下拉列表(项目模板)。

我正在使用item命令事件,当单击Edit链接时,它应获取名为“Description”的列的当前行值,并且出于测试目的,我将此值放入名为“ Tdval ”。

Tdval文本框为空,当我检查断点时,看起来项目命令事件并非全部触发(因为未点击断点)。

我不明白为什么。

单击“编辑”链接时,页面不会回发。

它只是用户控制链接按钮。请帮我。

原谅任何错误,对此我不熟悉。提前谢谢。

HTML:

<tr>
<asp:datagrid  ID="dgDetails" 
               EnableViewState="true"
               runat="server"
               onItemCommand="dgDetails_ItemCommand" 
               allowpaging="false" 
               allowcustompaging="false" 
               autogeneratecolumns="false" 
               allowsorting="true"
               backcolor="white" 
               Width="100%" 
               horizontalalign="center" 
               Font-bold="true"
               Font-Names="Verdana"
               Font-size="7pt"
               BorderColor="Silver"  > 
    <columns>
      <asp:BoundColumn DataField="ID" Visible="true"></asp:BoundColumn>
        <asp:TemplateColumn HeaderStyle-HorizontalAlign="Center"
                            ItemStyle-HorizontalAlign="Left"
                            HeaderText="Description"
                            HeaderStyle-Width="320px" >
               <ItemTemplate>
                    <asp:Label ID="lblDescription" runat="server">   
                       <%#DataBinder.Eval(Container.DataItem, "Description")%>
                    </asp:Label>
                </ItemTemplate>
       </asp:TemplateColumn>
       <asp:TemplateColumn HeaderStyle-HorizontalAlign="Left"
                           ItemStyle-HorizontalAlign="Left"
                           HeaderText="Pr."
                           HeaderStyle-Width="20px" >
                <ItemTemplate>                      
                    <asp:CheckBox ID="chkPrimary" runat="server" Enableviewstate="true"> 
                   </asp:CheckBox>
                </ItemTemplate> 
              <asp:LinkButton ID="lnkEdit" runat="server" 
                              CommandName="Edit">Edit
             </asp:LinkButton>
   </columns>

 </asp:datagrid>
</tr>
<tr>
    <td>
      <asp:TextBox ID="Tdval" runat="server"> </asp:TextBox>
    </td> 

代码背后:

 Public Sub dgDetails_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgDetails.ItemCommand

        Select Case e.CommandName
            Case "Edit"
                Dim intRow As Integer
                intRow = e.Item.ItemIndex
            Dim dgRow As DataGridItem
            dgRow=dgDetails.Items.Item(intRow)
                Dim val As String
                val=Ctype(dgRow.Cells(0).Text, String)  (Description column)
                Tdval.Text=val.Text 
      End Select
     End Sub

1 个答案:

答案 0 :(得分:0)

我可以在page_load上检查page.ispostback之后调用bindGrid()方法,如下所示:

protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {
            return;
        }
       BindGrid();
    }