2013-10-22 198 views
1

我用Google搜索每一個地方,但沒有一個明確的答案 我嘗試使用下面的代碼使用詳細信息視圖更新記錄:的DetailView更新不工作

 <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
     AllowSorting="True" AutoGenerateColumns="False" 
     BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" 
     CellPadding="2" DataKeyNames="Rec_ID" DataSourceID="ContactsMasterDS" 
     ForeColor="Black" GridLines="None" PageSize="3"> 
     <AlternatingRowStyle BackColor="PaleGoldenrod" /> 
     <Columns> 
      <asp:CommandField ShowSelectButton="True" /> 
      <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> 
      <asp:BoundField DataField="Full_Name" HeaderText="Full_Name" SortExpression="Full_Name" /> 
      <asp:BoundField DataField="Gender" HeaderText="Gender" SortExpression="Gender" /> 
      <asp:BoundField DataField="AgeGroup" HeaderText="AgeGroup" SortExpression="AgeGroup" /> 
      <asp:BoundField DataField="Nationality" HeaderText="Nationality" SortExpression="Nationality" /> 
      <asp:BoundField DataField="Occupation" HeaderText="Occupation" SortExpression="Occupation" /> 
      <asp:BoundField DataField="Resident" HeaderText="Resident" SortExpression="Resident" /> 
     </Columns> 
     <FooterStyle BackColor="Tan" /> 
     <HeaderStyle BackColor="Tan" Font-Bold="True" /> 
     <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" /> 
     <SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" /> 
     <SortedAscendingCellStyle BackColor="#FAFAE7" /> 
     <SortedAscendingHeaderStyle BackColor="#DAC09E" /> 
     <SortedDescendingCellStyle BackColor="#E1DB9C" /> 
     <SortedDescendingHeaderStyle BackColor="#C2A47B" /> 
    </asp:GridView> 
    <asp:SqlDataSource ID="ContactsMasterDS" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
     ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
     SelectCommand="Select * from Contacts"></asp:SqlDataSource> 
    <br /> 
    <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
     DataKeyNames="Rec_ID" DataSourceID="ContactsDetailsDS" Height="50px" 
     Width="545px" onitemupdated="DetailsView1_ItemUpdated"> 
     <Fields> 
      <asp:BoundField DataField="Rec_ID" HeaderText="Rec_ID" ReadOnly="True" SortExpression="Rec_ID" /> 
      <asp:BoundField DataField="Gender" HeaderText="Gender" SortExpression="Gender" /> 
      <asp:BoundField DataField="AgeGroup" HeaderText="AgeGroup" SortExpression="AgeGroup" /> 
      <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> 
      <asp:BoundField DataField="Full_Name" HeaderText="Full_Name" SortExpression="Full_Name" /> 
      <asp:BoundField DataField="DOB" HeaderText="DOB" SortExpression="DOB" /> 
      <asp:BoundField DataField="Phone_No" HeaderText="Phone_No" SortExpression="Phone_No" /> 
      <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" /> 
      <asp:BoundField DataField="Nationality" HeaderText="Nationality" SortExpression="Nationality" /> 
      <asp:BoundField DataField="Account_No" HeaderText="Account_No" SortExpression="Account_No" /> 
      <asp:BoundField DataField="Occupation" HeaderText="Occupation" SortExpression="Occupation" /> 
      <asp:BoundField DataField="Resident" HeaderText="Resident" SortExpression="Resident" /> 
      <asp:BoundField DataField="Room_No" HeaderText="Room_No" SortExpression="Room_No" /> 
      <asp:BoundField DataField="Last_Branch" HeaderText="Last_Branch" SortExpression="Last_Branch" /> 
      <asp:BoundField DataField="Last_Date" HeaderText="Last_Date" SortExpression="Last_Date" /> 
      <asp:BoundField DataField="Last_Time" HeaderText="Last_Time" SortExpression="Last_Time" /> 
      <asp:CheckBoxField DataField="isComplete" HeaderText="isComplete" SortExpression="isComplete" /> 
      <asp:CommandField ShowEditButton="True" /> 
     </Fields> 
    </asp:DetailsView> 
    <asp:SqlDataSource ID="ContactsDetailsDS" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
     ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
     SelectCommand="Select * from Contacts where [Rec_ID] = @Rec_ID" 
     UpdateCommand="Update Contacts Set [email protected]_No Where [email protected]_ID" > 
     <SelectParameters> 
      <asp:ControlParameter ControlID="GridView1" Name="Rec_ID" PropertyName="SelectedValue" /> 
     </SelectParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="Room_No" Type="String" /> 
      <asp:Parameter Name="Rec_ID" Type="String" DefaultValue="0" /> 
     </UpdateParameters> 
    </asp:SqlDataSource> 

當我改變where子句是「凡·REC_ID = 2" 它的工作原理,但使用參數時它不這樣做所需的更新 任何幫助,請

+0

嘗試改變這一點: briskovich

+0

沒有它沒有工作 –

+0

嘗試這個。使您的Rec_Id成爲標籤而不是文本框。幾周前我遇到了這個問題,而且工作。和 convert(varchar,rec_id)LIKE @rec_id。 – briskovich

回答

0

我發現解決方案如下:

1-在where子句中:將Rec_ID更改爲任何其他名稱,例如ID。

之前:UpdateCommand="Update Contacts Set [email protected]_No Where [Rec_ID][email protected]_ID">

後:UpdateCommand="Update Contacts Set [email protected]_No Where [Rec_ID][email protected]">

2-在UpdateParameters獲得ID的值,作爲這樣的:

之前:<asp:Parameter Name="Rec_ID" Type="Int32" />

後:<asp:ControlParameter ControlID="DetailsView1" Name="ID" PropertyName="SelectedValue" />

此將允許您將Rec_ID保持爲只讀或甚至在DetailsView刪除隱藏它

感謝大家

1
private void OnDetailsViewItemUpdating(object sender, DetailsViewUpdateEventArgs e) { 
     if (String.Equals((string)e.NewValues["firstName"], "john", StringComparison.OrdinalIgnoreCase)) { 
      // "John" is not a valid name, so change it to "Steve": 
      e.NewValues["firstName"] = "Steve"; 
     } 
     if (String.Equals((string)e.NewValues["lastName"], "doe", StringComparison.OrdinalIgnoreCase)) { 
      // If "Doe" is the last name, cancel the whole operation 
      e.Cancel = true; 
     } 

} 

你必須寫‘onItemUpdated’不onitemupdated。檢查案例。

希望這可以幫助你。 DetailsView控件的ItemUpdating事件的參數既包含原始數據(如果可用),也包含用戶輸入的新數據。下面是如何檢查數據並可選擇修改它的示例

+0

因此,我們必須使用代碼後面做更新,詳細視圖上的microsoft實例不用任何,他們只是在asp控件上繼續做這個工作 –

+0

後面的代碼是需要更新的。 – Monika