1

GridView と SqlDataSource の標準機能を使用して、データベース エントリを挿入したいと考えています。いくつかのバージョンの以前の汚い回避策 (たとえば、こちらこちらを参照) 以来、このトピックに関する更新はありましたか? ウェブ上で新しいチュートリアルを見つけることができませんでした。

たとえば、標準の -Datafield と SqlDataSource の UpdateCommand を使用してエントリをデータベースに書き込むことができるハンドラはありますか? 現時点では、UpdateCommand は入力した値を取得していないようです。これらの SqlDataSource-Database-Queries を適切にデバッグするにはどうすればよいですか?

私が試した解決策は次のとおりです。私のデータベース テーブル tblname には、「名前」という 1 つの列しか含まれていません。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:VConStr %>"
    DeleteCommand="DELETE FROM [tblname] WHERE [name] = @name" 
    InsertCommand="INSERT INTO [tblname] ([name]) VALUES (@name)" 
    SelectCommand="SELECT [name] FROM [tblname]"
    UpdateCommand="UPDATE [tblname] SET [name] = @name WHERE [name] = @name">
    <DeleteParameters><asp:Parameter Name="name" Type="String" /></DeleteParameters>
    <InsertParameters><asp:Parameter Name="name" Type="String" /></InsertParameters>
    <UpdateParameters><asp:Parameter Name="name" Type="String" /></UpdateParameters>
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="name" DataSourceID="SqlDataSource1" ShowFooter="true">
    <Columns>
        <asp:TemplateField HeaderText="Name" ShowHeader="True">
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("name") %>' />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("name") %>' />
            </EditItemTemplate>
            <FooterTemplate>
                <asp:TextBox ID="Insertname" name="name_new" runat="server" Text='<%# Bind("name") %>' />
            </FooterTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Action" ShowHeader="True">
            <ItemTemplate>
                <asp:Button ID="Button1" runat="server" Text="Edit" CommandName="Edit" />
                <asp:Button ID="Button4" runat="server" Text="Delete" CommandName="Delete" OnClientClick="return confirm('Sure?');" />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:Button ID="Button2" runat="server" Text="Edit entry" CommandName="Update" />
                <asp:Button ID="Button3" runat="server" Text="Cancel" CommandName="Cancel" />
            </EditItemTemplate>
            <FooterTemplate>
                <asp:Button ID="Button5" runat="server" Text="New" CommandName="Insert" />
            </FooterTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
4

0 に答える 0