2010-07-29 3 views
1

Я имел вид сетки, которые связывают SQL источника данных и добавлены поля для обновления данных в виде сетки, но он не сделал никакого обновления и не появилось никаких ошибок, и я не знаю, где ошибкасетки обновление вид

SQL хранимых процедур :

ALTER proc [dbo].[GetNewswithType] 
As 
Begin 
Select News.Id,News.Type_Id, 
News.Header,News.HText,News.DText,News.Active,News.Add_Date, 
NewsType.Type_AR,NewsType.Type_EN 
From News 
Inner Join NewsType On 
NewsType.Id=News.Type_Id 
End 

ALTER Proc [dbo].[UpdateNews] 
(
@Id Int 
,@Header Nvarchar(50) 
,@HText Nvarchar(Max) 
,@DText Nvarchar(Max) 
,@Type_Id Int 
,@Active Bit 

) 
AS 
BEGIN 
Update News Set 

@Header =Header 
,@HText =HText 
,@DText =DText 
,@Type_Id=Type_Id 
,@Active =Active 

WHERE @Id=Id 
END 

ASPX страница:

<div class="m10"> 
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" 
     CellPadding="4" DataKeyNames="Id" DataSourceID="SDSNews" ForeColor="Black" 
     GridLines="Vertical" 
     onselectedindexchanged="GridView1_SelectedIndexChanged" 
     onselectedindexchanging="GridView1_SelectedIndexChanging" 
      onpageindexchanging="GridView1_PageIndexChanging" AllowPaging="True" 
      onrowupdated="GridView1_RowUpdated" 
      onrowdatabound="GridView1_RowDataBound"> 
     <FooterStyle BackColor="#CCCC99" /> 
     <RowStyle BackColor="#F7F7DE" /> 
     <Columns> 
      <asp:CommandField HeaderText="Function" ShowEditButton="True" /> 
      <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" 
       Visible="False" /> 
      <asp:BoundField DataField="Header" HeaderText="Header" 
       SortExpression="Header" /> 
      <asp:BoundField DataField="HText" HeaderText="HomeText" 
       SortExpression="HText" /> 
      <asp:BoundField DataField="DText" HeaderText="DetailsText" 
       SortExpression="DText" /> 
      <asp:BoundField DataField="Type_Id" HeaderText="TypeNumber" 
       SortExpression="Type_Id" /> 
      <asp:BoundField DataField="Type_AR" HeaderText="Type_AR" 
       SortExpression="Type_AR" InsertVisible="False" ReadOnly="True" /> 
      <asp:BoundField DataField="Type_EN" HeaderText="Type_EN" 
       SortExpression="Type_EN" InsertVisible="False" ReadOnly="True" /> 
      <asp:CheckBoxField DataField="Active" HeaderText="Active" 
       SortExpression="Active" /> 
      <asp:BoundField DataField="Add_Date" HeaderText="Add_Date" 
       SortExpression="Add_Date" InsertVisible="False" ReadOnly="True" /> 
     </Columns> 
     <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
     <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" /> 
     <AlternatingRowStyle BackColor="White" /> 
    </asp:GridView> 
     <asp:SqlDataSource ID="SDSNews" runat="server" 
      ConnectionString="Data Source=ELARABY-1EACFA3\SQLEXPRESS;Initial Catalog=ElarabyGroup;Integrated Security=True" 
      ProviderName="System.Data.SqlClient" SelectCommand="GetNewswithType" 
      SelectCommandType="StoredProcedure" UpdateCommand="UpdateNews" 
      UpdateCommandType="StoredProcedure"> 
      <UpdateParameters> 
       <asp:ControlParameter ControlID="GridView1" Name="Id" 
        PropertyName="SelectedValue" Type="Int32" /> 
       <asp:ControlParameter ControlID="GridView1" Name="Header" 
        PropertyName="SelectedValue" Type="String" /> 
       <asp:ControlParameter ControlID="GridView1" Name="HText" 
        PropertyName="SelectedValue" Type="String" /> 
       <asp:ControlParameter ControlID="GridView1" Name="DText" 
        PropertyName="SelectedValue" Type="String" /> 
       <asp:ControlParameter ControlID="GridView1" Name="Type_Id" 
        PropertyName="SelectedValue" Type="Int32" /> 
       <asp:ControlParameter ControlID="GridView1" Name="Active" 
        PropertyName="SelectedValue" Type="Boolean" /> 
      </UpdateParameters> 
     </asp:SqlDataSource> 
    </div> 

ответ

1

Добавьте код вашей процедуры обновления, чтобы определить, если она вызывается:

  1. Создать таблицу с именем Logging (или любое имя по вашему выбору), который имеет столбец с именем Message (снова, или любое имя по вашему выбору)
  2. Добавить в свой UpdateNews процедуре INSERT INTO [dbo].[Logging] (Message) VALUES ('Procedure Called'). Вы можете записать значения переданных параметров, если хотите.

Посредством этого вы можете определить, действительно ли вызвана хранимая процедура. Другой вариант - использовать Sql Server Profiler, чтобы определить это. Если вы можете определить, что это , это, вызывающий хранимую процедуру, тогда что-то идет не так, и регистрируя параметры, вы можете «вручную позвонить», чтобы выяснить, почему.

Скорее всего, что хранимая процедура никогда не вызывается, как вы говорите сетке, чтобы сохранить изменения обратно в базу данных? Глядя на this tutorial, я бы предположил, что ваши обновления не вызывают «сохранение».

+0

Я сделал это, и сообщение было («Процедура вызывается»), но проблема, которую я не мог знать. – Myworld

+0

Вам нужно настроить строку «INSERT INTO», как я предложил в пункте 2, чтобы сохранить все пройденные параметры в таблицу регистрации. Таким образом, вы можете использовать введенные значения для вызова процедуры и определить, что не так. Короче говоря, если процедура окончательно называется, вполне вероятно, что что-то не так с вашей процедурой. – Rob

+0

Я забыл сказать вам, что в таблице новостей был ключ foriegn (Type_Id) к таблице первичного ключа NewsType (Id) – Myworld

Смежные вопросы