1
我知道這是非常基本的,幾乎如此基本,很難找到相關的例子。GridView上的編輯按鈕沒有用輸入框數據更新
我有一個gridview表查詢數據庫,並使用VS17我想添加一個編輯列。我使用設計器佈局生成了以下代碼,但是當我單擊編輯按鈕時,該行變爲可編輯,但更新語句不更新數據庫。一旦我點擊更新,頁面刷新並且表格消失。
我哪裏錯了?另外,我知道前任在列名中使用的拼寫錯誤。
這裏的CS文件:
<%@ Control Language="C#" AutoEventWireup="true" Inherits="CMSWebParts_Custom_Intranet_Data_inventorycountsheetcategorydatagridedit" CodeFile="~/CMSWebParts/Custom/Intranet/Data/inventorycountsheetcategorydatagridedit.ascx.cs" %>
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="PartCatagoriesID" DataMember="DefaultView" DataSourceID="SqlDataSource1" EnableModelValidation="False">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="CategoryName" HeaderText="CategoryName" SortExpression="CategoryName" />
<asp:BoundField DataField="CategroyDescription" HeaderText="CategroyDescription" SortExpression="CategroyDescription" />
<asp:BoundField DataField="PartCatagoriesID" HeaderText="PartCatagoriesID" InsertVisible="False" ReadOnly="True" SortExpression="PartCatagoriesID" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" DeleteCommand="DELETE FROM [Form_IntranetSharpTransit_PartCategories] WHERE [PartCatagoriesID] = ?" EnableViewState="False" InsertCommand="INSERT INTO [Form_IntranetSharpTransit_PartCategories] ([CategoryName], [CategroyDescription], [PartCatagoriesID]) VALUES (?, ?, ?)" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT [CategoryName], [CategroyDescription], [PartCatagoriesID] FROM [Form_IntranetSharpTransit_PartCategories]" UpdateCommand="UPDATE [Form_IntranetSharpTransit_PartCategories] SET [CategoryName] = ?, [CategroyDescription] = ? WHERE [PartCatagoriesID] = ?">
<DeleteParameters>
<asp:Parameter Name="PartCatagoriesID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="CategoryName" Type="String" />
<asp:Parameter Name="CategroyDescription" Type="String" />
<asp:Parameter Name="PartCatagoriesID" Type="Int32" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="CategoryName" Type="String" />
<asp:Parameter Name="CategroyDescription" Type="String" />
<asp:Parameter Name="PartCatagoriesID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
這裏的ASCX文件:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using CMS.PortalControls;
using CMS.GlobalHelper;
using CMS.TreeEngine;
using CMS.CMSHelper;
using CMS.ExtendedControls;
public partial class CMSWebParts_Custom_Intranet_Data_inventorycountsheetcategorydatagridedit: CMSAbstractWebPart
{
/// <summary>
/// Enables or disables resolving of inline controls.
/// </summary>
public bool ResolveDynamicControls
{
get
{
return ValidationHelper.GetBoolean(this.GetValue("ResolveDynamicControls"), true);
}
set
{
this.SetValue("ResolveDynamicControls", value);
}
}
/// <summary>
/// Enables or disables HTML encoding of text.
/// </summary>
public bool EncodeText
{
get
{
return ValidationHelper.GetBoolean(this.GetValue("EncodeText"), false);
}
set
{
this.SetValue("EncodeText", value);
}
}
/// <summary>
/// Content loaded event handler.
/// </summary>
public override void OnContentLoaded()
{
base.OnContentLoaded();
SetupControl();
}
/// <summary>
/// Initializes the control properties.
/// </summary>
protected void SetupControl()
{
if (this.StopProcessing)
{
// Do not process
}
else
{
}
}
/// <summary>
/// Reloads the control data.
/// </summary>
public override void ReloadData()
{
base.ReloadData();
SetupControl();
}
}
非常基本的,我知道,但這不是我的強項,我好像不能找到一個適用的例子或少量文件。任何幫助,將不勝感激!
我用這個建議來創建一個GridView1_RowEditing方法。基本上,這種方法將以某種方式存儲表單中的內容,OnRowUpdating方法將會是什麼?執行某種更新的查詢? –
您可能需要考慮使用數據表和數據適配器。這[鏈接](https://msdn.microsoft.com/en-us/library/z1z2bkx2(v = vs.110).aspx)可能會有所幫助。 – gh0st
非常感謝!我會在午餐時間閱讀數據表,看看! –