2011-03-28 4 views
1

내 업데이트에 대한 매개 변수를 gridview에서 가져 오려고하지만 표시하지 않으려는 ID 열입니다. 바운드 필드에 데이터를 표시하면 올바르게 작동하지만 가시성을 false로 설정하면 매개 변수가 더 이상 업데이트 저장 프로 시저로 전송되지 않습니다. gridview에 넣을 수있는 hiddenfield 열이없는 것 같습니다.GridView에서 SQLDataSource 업데이트 매개 변수 가져 오기

내가 뒤에있는 코드를 통해 매개 변수를 설정하기 위해 시도했지만 나는 다음과 같은 코드가 작동하지 않습니다 원하는 데이터에 액세스하는 방법에 대한 확실하지 오전 (그것은 아무것도

Protected Sub grvFacilityDisciplineBillingRate_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs) Handles grvFacilityDisciplineBillingRate.RowUpdating 
    Dim row As GridViewRow = grvFacilityDisciplineBillingRate.Rows(e.RowIndex) 
    sqlDisciplineBillingRate.UpdateParameters("Facility_ID").DefaultValue = CInt(row.DataItem("Facility_ID")) 
    sqlDisciplineBillingRate.UpdateParameters("Discipline_ID").DefaultValue = CInt(row.DataItem("Discipline_ID")) 
End Sub 

그리고이에 매개 변수를 설정 두 개의 ID 열이있는 프런트 엔드 내가

<asp:SqlDataSource ID="sqlDisciplineBillingRate" runat="server" DataSourceMode="DataSet" SelectCommandType="StoredProcedure" SelectCommand="SP_Facility_DisciplineBillingRates" UpdateCommandType="StoredProcedure" UpdateCommand="SP_DiscplineBillingRate_Update" ConnectionString="<%$ ConnectionStrings:Trustaff_ESig2 %>"> 
     <SelectParameters> 
      <asp:Parameter Name="Facility_ID" DbType="Int32" /> 
     </SelectParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="Facility_ID" DbType="Int32" /> 
      <asp:Parameter Name="Discipline_ID" DbType="Int32" /> 
     </UpdateParameters> 
    </asp:SqlDataSource> 
    <asp:GridView ID="grvFacilityDisciplineBillingRate" runat="server" DataSourceID="sqlDisciplineBillingRate" DataKeyNames="DisciplineBillingRate_ID" AutoGenerateColumns="false" AllowSorting="true" AllowPaging="false" AutoGenerateEditButton="true" CssClass="gridview"> 
     <EmptyDataTemplate> 
      There were no discipline billing rates for this facility. 
     </EmptyDataTemplate> 
     <Columns> 
      <asp:BoundField DataField="Name" HeaderText="Discipline" SortExpression="Name" ReadOnly="true" /> 
      <asp:BoundField DataField="BillingRate" HeaderText="Billing Rate" SortExpression="BillingRate" /> 
      <asp:BoundField DataField="Facility_ID" HeaderText="Facility_ID" SortExpression="Facility_ID" InsertVisible="false" /> 
      <asp:BoundField DataField="Discipline_ID" HeaderText="Discipline_ID" SortExpression="Discipline_ID" /> 
     </Columns> 
    </asp:GridView> 

답변

4

예 : DataKeyNames을 설정하면됩니다. DataKeyNames = "Facility_ID, Discipline_ID"이고 GV의 업데이트 및 삭제 기능을 사용할 때 SqlDataSource가 알아낼 것입니다.

+0

감사! 나는 그것이 가치와 가치를 더할 수 있다는 것을 몰랐다. 지금은 이름과 이름이 아니라, 하하. –

1

이 템플릿 필드를 사용하여 시도하고 레이블 컨트롤을 사용하여 볼 수 = "false"로 설정하여 숨길 원하는하지 않은 표시됩니다.

<asp:TemplateField HeaderText="College"> 
     <ItemTemplate> 
     <asp:Label ID="lbl_Title" runat="server" text='<%# Bind("Title") %>' visible="false"></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 

코드 숨김에서 값에 액세스하려면 아래 코드를 사용하십시오. 당신은 ID 열을 원치 않는 경우

If gvrow.RowType = DataControlRowType.DataRow Then 
    Dim label1 As Label = DirectCast(gvrow.FindControl("lbl_Title"), Label) 
'Access text of label using label1.text and cast to int or string 
End If 

당신은 템플릿 필드를 사용하여 제거 할 수 있습니다. 그리고 여전히 datakeynames 속성을 사용하여 액세스하십시오.

+0

도움 주셔서 감사합니다. –

관련 문제