2

SQL Server 2008 R2 と VS2010 C# ASP.NET 4 を使用しています

FormView と DetailsView には、挿入モードで空の TextBox が表示されます。

これらの TextBoxes に、SQL Server のそれぞれの列のデフォルトのデフォルト値を反映させたいと思います。

それを行う簡単な方法はありますか?


編集:(例)

質問:

ここに画像の説明を入力

テーブル:

CREATE TABLE [dbo].[SampleTable](
    [PKColumn1] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
    [IntColumn2] [int] NOT NULL DEFAULT (12),
    [nvarcharColumn3] [nvarchar](50) NOT NULL DEFAULT (N'bla bla'),
    [IntColumn4NoDefault] [int] NULL)

aspx マークアップ:

<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px" 
            AutoGenerateRows="False" DataKeyNames="PKColumn1" DataSourceID="SqlDataSource1" 
            DefaultMode="Insert">
            <Fields>
                <asp:BoundField DataField="PKColumn1" HeaderText="PKColumn1" InsertVisible="False" ReadOnly="True" SortExpression="PKColumn1" />
                <asp:BoundField DataField="IntColumn2" HeaderText="IntColumn2" SortExpression="IntColumn2" />
                <asp:BoundField DataField="nvarcharColumn3" HeaderText="nvarcharColumn3" SortExpression="nvarcharColumn3" />
                <asp:BoundField DataField="IntColumn4NoDefault" 
                    HeaderText="IntColumn4NoDefault" SortExpression="IntColumn4NoDefault" />
                <asp:CommandField ShowInsertButton="True" />
            </Fields>
        </asp:DetailsView>

        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:dbConnectionString %>" 
            InsertCommand="INSERT INTO [SampleTable] ([IntColumn2], [nvarcharColumn3], [IntColumn4NoDefault]) VALUES (@IntColumn2, @nvarcharColumn3, @IntColumn4NoDefault)" 
            SelectCommand="SELECT * FROM [SampleTable]">
            <InsertParameters>
                <asp:Parameter Name="IntColumn2" Type="Int32" />
                <asp:Parameter Name="nvarcharColumn3" Type="String" />
                <asp:Parameter Name="IntColumn4NoDefault" Type="Int32" />
            </InsertParameters>
        </asp:SqlDataSource>

C# コード ビハインドには何もありません。

4

1 に答える 1

1

はいあります...

select  c.name, definition 
from    sys.default_constraints dc 
join    sys.columns c 
on      c.object_id = dc.parent_object_id 
        and c.column_id = dc.parent_column_id 
where   parent_object_id = object_id('mytable') 

結果セットを取得したら、列名とデフォルト値を取得する必要があります。デフォルト値を持つ各列がテキストボックスに (1:1) 対応する場合は、単純にリピーターをフォーム/Web フォームに追加し、「定義」を Text プロパティにバインドします。出力に括弧が追加されているため、データを少し操作する必要があるかもしれませんが、正規表現または単純な置換でうまくいく可能性があります。

于 2012-05-12T12:08:41.433 に答える