简体   繁体   English

按下“编辑链接”按钮后,仅某些列可以更新,其余列设置为null

[英]After Edit Linkbutton is pressed only certain columns can be Updated with the rest set to null

When you select the "Edit" button the first two columns: idt and datetime allows you to update. 当您选择“编辑”按钮时,前两列:idt和datetime允许您更新。

(as long as the Primary Key is Unique) (只要主键是唯一的)

The last three columns:col1, col2, and col3 come up null no matter what you enter before clicking "Update". 无论您在单击“更新”之前输入什么,后三列:col1,col2和col3都为空。

Here is the error code after entering "Update": 这是输入“更新”后的错误代码:

System.FormatException: Input string was not in a correct format.

Here is my code: 这是我的代码:

 <asp:GridView ID="GridView1" 
    runat="server"
    DataSourceID="SqlDataSource1"
    AutoGenerateColumns="false"
    DataKeyNames="idt" 
    AutoGenerateEditButton="true" 
    AutoGenerateDeleteButton="true"
    showfooter="true">
    <Columns>
        <asp:BoundField DataField="idt" HeaderText="idt" Readonly="true" SortExpression="idt" />
        <asp:BoundField DataField="datetime" HeaderText="datetime" SortExpression="datetime" />
        <asp:TemplateField SortExpression="col1" HeaderText="col1">
                <ItemTemplate>
                    <asp:TextBox ID="txt1" runat="server" Text='<%# Eval("col1") %>' />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:textbox id="col1TextBox" text='<%#Eval("col1")%>' runat="server" />
                </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField SortExpression="col2" HeaderText="col2">
                <ItemTemplate>
                    <asp:TextBox ID="txt2" runat="server" Text='<%# Eval("col2") %>' />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:textbox id="col2TextBox" text='<%#Eval("col2")%>' runat="server" />
                </EditItemTemplate>
            </FooterTemplate>
        </asp:TemplateField>
        <asp:TemplateField SortExpression="col3" HeaderText="col3">
                <ItemTemplate>
                    <asp:TextBox ID="txt3" runat="server" Text='<%# Eval("col3") %>' />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:textbox id="col3TextBox" text='<%#Eval("col3")%>' runat="server" />
                </EditItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:SqlDataSource
    id="SqlDataSource1"
    ConnectionString="<%$ ConnectionStrings:Total %>"
    SelectCommand="SELECT * FROM [test];"
    UpdateCommand="UPDATE [test] SET [datetime] = @datetime, [col1] = @col1, [col2] = @col2, [col3] = @col3 WHERE [idt] = @idt;"
    DeleteCommand="DELETE FROM [test] WHERE [idt] = @idt;"
    runat="server">
    <DeleteParameters>
        <asp:Parameter Name="idt" Type="Int32" />
    </DeleteParameters>
    <UpdateParameters>
        <asp:Parameter Name="idt" Type="Int32" />
        <asp:Parameter Name="datetime" Type="String" />
        <asp:Parameter Name="col1" Type="Int32" />
        <asp:Parameter Name="col2" Type="Int32" />
        <asp:Parameter Name="col3" Type="Int32" />
    </UpdateParameters>    </asp:SqlDataSource>

I think Bind should be used instead of Eval. 我认为应该使用Bind代替Eval。 As Bind is for two way databinding and used when you want to edit or insert. As Bind用于两种方式的数据绑定,在您要编辑或插入时使用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM