2011-03-28 111 views
1

我想從gridview中獲取我的更新參數,但它是一個ID列,我不想顯示。如果我在綁定字段中顯示數據,它可以正常工作,但如果將可見性設置爲false,則不再將參數發送到更新存儲過程。似乎沒有可以放入gridview的隱藏字段列。從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

謝謝!我不知道我可以增加更多的價值,雖然現在看它是名稱而不是名稱,哈哈。 – 2011-03-28 16:22:00

1

嘗試使用模板領域和使用標籤控制,並通過設置可見=「假」隱藏起來的東西。

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

並使用下面的代碼來訪問代碼隱藏的值。

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 

如果您不想使用ID列,則可以消除使用模板化字段。仍然使用datakeynames屬性訪問它

+0

感謝您的幫助。 – 2011-03-28 16:23:54