【问题标题】:SqlDataSource UpdateCommand is not workingSqlDataSource 更新命令不起作用
【发布时间】:2015-07-27 06:54:32
【问题描述】:

我有一个 GridView,它的 DataSource 是一个 SqlDataSource

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
    UpdateCommand="UPDATE chemlab_Registerkarte SET [Name] =@Name WHERE [regID] =@regID;" OnUpdating="Update"
    SelectCommandType="Text" SelectCommand='select [regID], [Name] from chemlab_Registerkarte;'>
</asp:SqlDataSource>

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
    DataSourceID="SqlDataSource1" AllowPaging="True" DataKeyNames="regID, Name">
    <Columns>
        <asp:CommandField ShowEditButton="True" CancelText="<%$ Resources:LocalizedText,TextCancel %>"
            EditText="<%$ Resources:LocalizedText,TextEdit %>" UpdateText="<%$ Resources:LocalizedText,TextSave %>"/>
        <asp:BoundField DataField="regID" HeaderText="regID" ReadOnly="True" SortExpression="regID"
            Visible="true" />
        <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name"/>
    </Columns>
</asp:GridView>

我的问题是,虽然选择命令工作正常,但它没有更新。

我看过这个问题: Why isn't my SqlDataSource's UpdateCommand working? 但我包含了 DataKeyNames(如您所见),所以这不是我的错误。

我做错了什么?

编辑

我尝试使用以下代码从我的 GridView 中获取数据:

String[] values = new String[2];    
values[0] = this.GridView1.Rows[0].Cells[0].Text;
values[1] = this.GridView1.Rows[0].Cells[1].Text;

当我不编辑它时,我得到了这个值,如果我这样做,我得到一个空字符串。因此我什至无法手动更新我的数据库。

编辑 2

我有另一个网站正在运行:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
        UpdateCommand="UPDATE chemlab_Anlagen SET Kuerzel =@Kuerzel, Fuellvolumen =@Fuellvolumen, aktiv =@aktiv where aID=@aID;"
        SelectCommandType="Text" SelectCommand='select a.aID, a.InventarNum, m.MO_name, a.Kuerzel, a.Fuellvolumen, a.aktiv from chemlab_Anlagen as a join vw_chemlab_MaintenanceObject as m on a.InventarNum = m.MO_key;'>
    </asp:SqlDataSource>

 <asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
            DataSourceID="SqlDataSource1" AllowPaging="True" DataKeyNames="InventarNum,aID,MO_name">
            <Columns>
                <asp:CommandField ShowEditButton="True" CancelText="<%$ Resources:LocalizedText,TextCancel %>"
                    EditText="<%$ Resources:LocalizedText,TextEdit %>" UpdateText="<%$ Resources:LocalizedText,TextSave %>" />
                <asp:BoundField DataField="aID" HeaderText="aID" ReadOnly="True" SortExpression="aID"
                    Visible="false" />
                <asp:BoundField DataField="InventarNum" HeaderText="InventarNum" ReadOnly="True"
                    SortExpression="InventarNum" />
                <asp:BoundField DataField="MO_name" HeaderText="MO_name" SortExpression="MO_name"
                    ReadOnly="true" />
                <asp:BoundField DataField="Kuerzel" HeaderText="Kuerzel" SortExpression="Kuerzel" />
                <asp:BoundField DataField="Fuellvolumen" HeaderText="Fuellvolumen" SortExpression="Fuellvolumen" />
                <asp:CheckBoxField DataField="aktiv" HeaderText="aktiv" SortExpression="aktiv" />
            </Columns>
        </asp:GridView>

【问题讨论】:

  • 您遇到任何错误?
  • 不,我没有收到任何错误,这就是我感到困惑的原因。
  • 尝试更新静态文本(检查更新是否像name='test'一样工作)如果不是那么它不是sql问题只有元素配置问题
  • @Buzka91 我用静态文本试了一下,它正在更新,所以不是sql问题。
  • @killexe 根据这个站点,有一些名为“UpdateParameters”的元素可以试试吗? asp.net/web-forms/overview/data-access/… + 命令末尾不需要分号 ;)

标签: asp.net sqldatasource


【解决方案1】:

我自己找到了解决方案,这是一个非常愚蠢的错误。

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" AllowPaging="True" DataKeyNames="regID, Name">

DataKeyNames 字段仅用于主键。我刚刚从此属性中删除了“名称”(因为它不是主键)并且它起作用了。

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.datakeynames(v=vs.110).aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 2014-01-28
    相关资源
    最近更新 更多