2015-10-12 73 views
0

您好我使用以下代码来显示ASPX行命令不是在gridview的工作

<asp:GridView Caption="Search Results" ID="PhysicianGrid" 
         runat="server" EnableSortingAndPagingCallbacks="false" PageSize="5" Style="width: 100%" 
         PagerSettings-Visible="false" AutoGenerateColumns="false" CssClass="grid" RowStyle-CssClass="gridDataRow" 
         HeaderStyle-CssClass="headerRow" EnableViewState ="False"> 
         <Columns> 
          <asp:TemplateField HeaderText="Select"> 
           <HeaderStyle Width="70px" HorizontalAlign="Center" /> 
           <ItemStyle HorizontalAlign="Center" /> 
           <ItemTemplate> 
            <asp:LinkButton ID="SelectedPhysician" runat="server" Text="Select" CommandName="SelectAffiliation" /> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:BoundField HeaderText="Physician ID" DataField="AMDM_Phys_ID" HeaderStyle-HorizontalAlign="Left" 
           ItemStyle-HorizontalAlign="Left" HeaderStyle-Width="70px" ItemStyle-Width="70px" /> 
         </Columns> 
        </asp:GridView> 

网格和以下是结合的功能,用于在上述网格

Private Sub PhysicianGrid_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles PhysicianGrid.RowDataBound 


    If e.Row.RowType = DataControlRowType.DataRow Then 
     Dim selectLink As LinkButton = DirectCast(e.Row.FindControl("SelectedPhysician"), LinkButton) 
     Dim physId As String = e.Row.Cells(1).Text 
     If OperationType.Value.Equals("ADD ALLOCATION") Then 
      selectLink.OnClientClick() = String.Format("DisplayUpdateAllocationDivFromSearch('{0}');", physId) 
     Else 
      'selectLink.OnClientClick() = String.Format("DisplayUpdateAllocationDivFromSearchNewPhy('{0}');", physId) 
      selectLink.CommandArgument = physId 
     End If 
     selectLink.CommandArgument = physId 
    End If 
End Sub 

当我单击行在选择链接上,应用程序获取回传并触击page_load函数,但在单击事件处理程序上运行。

Private Sub PhysicianGrid_Command(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles PhysicianGrid.RowCommand 
    If _requestView.CRTypeId = Resources.PageResources.CRTYPEAddNewPhysician AndAlso Request.Form("__EVENTTARGET").Contains("SelectedPhysician") AndAlso OperationType.Value.Equals("ADD NEW PHY") Then 

     Dim selectedPhys As Integer = CInt(e.CommandArgument) 
     Dim tempPhys As PhysicianView = New PhysicianView 
     tempPhys.LoadSearchPhysician(Master.Environment, selectedPhys, True) 
     Dim dt As ShipToDetailsDataSet.AMU_SHIPTO_ALLOCATION_VDataTable = New ShipToDetailsDataSet.AMU_SHIPTO_ALLOCATION_VDataTable 
     If allocationOperation.Value.Equals("UPDATE") Then 
      If GridSelectedShipToAllocations.Rows.Count > 0 Then 
       For Each row As GridViewRow In GridSelectedShipToAllocations.Rows 

        Dim allocationString As String = DirectCast(row.FindControl("TextBoxNewAllocation"), TextBox).Text 
        SaveGridAllocationChangeForPostback(allocationString) 
        dt.AddAMU_SHIPTO_ALLOCATION_VRow(CInt(_shipToID), CInt(row.Cells(GridSelectedShipToAllocations_columns.colAMDM_PHYS_ID).Text), row.Cells(GridSelectedShipToAllocations_columns.colPhysician_Name).Text, Nothing, CDec(row.Cells(GridSelectedShipToAllocations_columns.colAllocation).Text.Substring(0, row.Cells(GridSelectedShipToAllocations_columns.colAllocation).Text.Length - 1)), CDate("01/01/2007"), Nothing, "", "", "", row.Cells(GridSelectedShipToAllocations_columns.colMajorSpec).Text.Replace("&nbsp;", ""), row.Cells(GridSelectedShipToAllocations_columns.colSecondarySpecialty).Text.Replace("&nbsp;", ""), row.Cells(GridSelectedShipToAllocations_columns.colTertiarySpecialty).Text.Replace("&nbsp;", ""), "", "", "", "") 
       Next 
      End If 
      dt.AddAMU_SHIPTO_ALLOCATION_VRow(CInt(_shipToID), tempPhys.PhysicianID, String.Format("{0}, {1} {2}", tempPhys.LastName, tempPhys.FirstName, tempPhys.MiddleName), Nothing, 0, CDate("01/01/2007"), Nothing, tempPhys.StatusId, tempPhys.FirstName, tempPhys.LastName, tempPhys.MajorSpec, tempPhys.SECONDARY_SPECIALTY_LD, tempPhys.TERTIARY_SPECIALTY_LD, "", "", "", "") 
      GridSelectedShipToAllocations.DataSource = dt 
      GridSelectedShipToAllocations.DataBind() 
      GridSelectedShipToAllocations.Style("display") = "block" 
      'DivAddAllocationChange.Style("display") = "none" 
      LabelTotal.Style("display") = "block" 
      ScriptManager.RegisterStartupScript(Me.PhysicianGrid, GetType(Page), "hideSearchPhysDiv", "DisplayUpdateAllocationDivFromSearchNewPhy('" + selectedPhys.ToString + "');", True) 

     End If 

    End If 

End Sub 

怎样才能得到它命中行命令功能

p.S.我需要在网格中使用EnableViewState ="False"属性,我不能删除此属性。有没有解决这个问题的方法?

+0

你得到任何错误,如果是那么你必须提到这也在这里。您是否尝试了调试模式并检查CRTypeId,Request.Form(“__ EVENTTARGET”)的值。Contains(“SelectedPhysician”)和OperationType.Value? – haraman

+0

nope我没有收到任何错误,只是我写了几行代码,需要在用户点击选择链接时执行,但点击选择链接正在执行回发,但它没有触及行命令(其事件处理程序) 。 –

+0

我不确定,但可能是这是导致问题的代码。只是猜测OnClientClick和Command togather ...'selectLink.OnClientClick()'。 – haraman

回答

0

这是我在最近的一个项目中实现它的原因,可能是它可以帮助您找到问题。命令参数已在ASPX中指定,而不是在RowDataBound事件中指定。
作为一种解决方案,您可以在RowDataBound事件中注释掉代码,并在ASPX中设置CommandArgument并检查发生了什么。
此外,我想,而不是Request.Form("__EVENTTARGET").Contains("SelectedPhysician")您可以尝试e.CommandName.Equals("SelectedPhysician")

ASPX:

<asp:GridView ID="gvStudents" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
    ... 
    <asp:TemplateField> 
     <ItemTemplate> 
     <asp:LinkButton ID="BtnUnlock" runat="server" Text="Unlock" CausesValidation="True" CommandName="UnlockProfile" CommandArgument='<%# Eval("User_ID") %>' /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    ... 
    </Columns> 
</asp:GridView> 

代码隐藏:

Private Sub gvStudents_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvStudents.RowCommand 
    If e.CommandName.Equals("UnlockProfile") Then 
     Dim lnUser_ID As Integer = Convert.ToInt32(e.CommandArgument) 
     ... 
    ElseIf e.CommandName.Equals("LockProfile") Then 
     ... 
    End If 
End Sub 
相关问题