2015-10-12 121 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 
相關問題