0

我有一个页面,其中包含用户控制。

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

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

用户控件还有其他列,它们是复选框,里面的下拉列表(项目模板)。

我正在使用项目命令事件,当单击编辑链接时,它应该获取名为“描述”的列的当前行值,出于测试目的,我将此值放入名为“ 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
4

1 回答 1

0

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

protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {
            return;
        }
       BindGrid();
    }
于 2014-01-21T05:49:06.477 回答