2012-05-12 93 views
2

我正在使用SQL Server 2008 R2和VS2010 C#ASP.NET 4是否有一個開關將SQL Server表的字段的默認值作爲FormView/DetailsView的TextBox的默認值?

FormView和DetailsView在插入模式下爲空文本框。

我希望這些TextBoxes能夠反映SQL Server上相應列的默認值的默認值。

有沒有簡單的方法來做到這一點?


編輯:(例子)

問題:

enter image description here

表:

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#代碼背後。

+0

它駐留在information_schema表中。我忘了哪一個 –

回答

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),只需將一個Repeater添加到您的表單/網絡表單並將「定義」綁定到Text屬性。由於輸出中添加了圓括號,您可能需要稍微修改一下數據,但可能使用正則表達式或簡單的替換方法。

+0

chris-gessler - 所以,對於正常情況沒有簡單的解決方案,其中一些列沒有默認值。 – Different111222

+0

@ Different111222 - 簡單的解決方案是使用RIGHT JOIN –