2012-06-28 2 views
0

Для Gridview:Как установить параметры для SqlDataSource UpdateCommand

Я пытаюсь использовать хранимую процедуру в первый раз в SqlDataSource для UpdateCommand:

<asp:SqlDataSource ID="TECT_DataSource" runat="server" 
    ConnectionString="<%$ ConnectionStrings:OracleConnectionString %>" 
    ProviderName="<%$ ConnectionStrings:OracleConnectionString.ProviderName %>" 
    SelectCommand="SELECT MPID, User_Id, Last_Name, First_Name 
        FROM Scripts.vw_Tect_Exam" 
    UpdateCommand="P_TECT_UPD_EXAM_ID" UpdateCommandType="StoredProcedure"> 
    <UpdateParameters>      
     <asp:Parameter Name="MPID" Type="Int32" /> 
     <asp:Parameter Name="User_Id" Type="String" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 

Мне интересно, как в UpdateParameters получить их значения, поскольку я только указываю имя?
Процедура P_TECT_UPD_EXAM_ID два параметра в качестве входных данных: "in_MPID" и "in_UserId"
Я также интересно, как отобразить эти значения входных параметров для процедуры, как названия разные?

ответ

2

Вы можете установить их что-то вроде этого:

Пример: В примере MPID это имя параметра SQL @MPID

<UpdateParameters>      
    <asp:ControlParameter Name="MPID" ControlID="MPID_TextBox" PropertyName="Text /> 
    <asp:ControlParameter Name="User_Id" ControlID="User_Id_TextBox" PropertyName="Text /> 
</UpdateParameters> 

Исправление: Просто пятнистый ваши имена Param Proc, поэтому он должен быть

<asp:ControlParameter Name="in_MPID" ............... 
<asp:ControlParameter Name="in_User_Id" ............... 

Надеется, что это помогает ....

+0

Я не уверен, что я должен использовать для ControlID, так как я использую Gridview в текстовые поля появляются только тогда, когда я нажимаю кнопку редактирования, и они получают другое имя, сгенерированное для каждой строки. Есть идеи? – Baxter

0

Я действительно не использовал бы SqlDataSource. Это будет намного проще, если вы сделаете вызов базы данных в коде (или еще лучше на уровне доступа к данным).

Если вы используете SqlDataSource, вызов хранимой процедуры будет доступен только на этой странице. Каждый раз, когда вы хотите сделать тот же звонок, вам придется скопировать и вставить SqlDataSource или сделать из него UserControl.

В следующем примере используется Entity Framework для подключения к базе данных и извлечения записей:

public List<Record> GetAllRecordsByUserName(string credentials) 
{ 
    List<Record> recordList; 
    using (CustomEntities context = new CustomEntities()) 
    { 

     IQueryable<Section> recordQuery = from records in context.Records 
               where records.UserName == credentials 
               select records; 
     recordList = recordQuery.ToList<Record>(); 
    } 
    return recordList; 
} 
Смежные вопросы