Получение параметра обновления SQLDataSource из Gridview - PullRequest
1 голос
/ 28 марта 2011

Я пытаюсь получить параметр для моего обновления из таблицы, но это столбец идентификатора, который я не хочу отображать.Если я отображаю данные в ограниченном поле, все работает нормально, но если я устанавливаю видимость в false, параметр больше не отправляется в хранимую процедуру обновления.Кажется, не существует столбца скрытого поля, который я могу вставить в представление сетки.

Я пытался установить параметры с помощью кода, но я не уверен, как получить доступ к данным. Мне нужен следующий кодне работает (Устанавливает параметр в ничто

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

И это внешний интерфейс с двумя отображаемыми столбцами идентификаторов, а это не то, что я хочу

    <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>

Ответы [ 2 ]

4 голосов
/ 28 марта 2011

Вам просто нужно установить DataKeyNames например. DataKeyNames = "Facility_ID, Discipline_ID" и SqlDataSource выяснят это при использовании функции обновления и удаления GV.

1 голос
/ 28 марта 2011

Попробуйте использовать поля шаблона, используйте элемент управления надписью и скройте их, установив visible = "false".

    <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

Вы можете исключить использование шаблонных полей, если не хотите использовать столбцы идентификаторов. И все же получить к нему доступ, используя свойство datakeynames

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...