2010-07-07 3 views
2

용서해 주시지 만, 저는 .NET 초보자입니다. 나는 이것을 할 수있는 방법이 있어야한다는 것을 알고 있습니다..NET 세부 정보보기의 필드에 기본값을 지정하는 방법 삽입 모드

기본보기가 삽입으로 설정된 세부 정보보기가 있습니다. 이것은 사용자가 레코드를 데이터베이스에 입력하는 양식으로 사용됩니다. 두 개의 필드에 대해 필드에 정보를 미리 채울 수 있습니다. 특히, Active Directory를 쿼리하여 사용자 ID를 기반으로 사용자 이름을 반환하는 몇 가지 기능이있는 VB 스크립트가 있습니다. 이 스크립트는 정상적으로 작동합니다.

나는 다음과 같이 사용자 이름의 함수를 호출 :

<InsertItemTemplate> 
    <asp:TextBox ID="txtUserID" runat="server" Text='<%#CurrentUID() %>'></asp:TextBox> 
</InsertItemTemplate> 
<InsertItemTemplate> 
    <asp:TextBox ID="txtUserName" runat="server" Text='<%# GetUserName(CurrentUID()) %>'></asp:TextBox> 
</InsertItemTemplate> 

페이지가로드,이 사용자 ID와 사용자 이름 텍스트 상자를 채 웁니다.

그러나 양식을 제출할 때 텍스트 상자의 값은 데이터베이스에 삽입되지 않습니다.

값이 함수에서 왔을 때 필드의 기본값을 어떻게 설정할 수 있습니까?

도움 주셔서 감사합니다.

+0

는 값은 데이터베이스에 삽입되어 있습니까? 나는이 메소드를 시도하지 않았다. (보통 내 page_load /! Page.IsPostBack 섹션에 디폴트 데이터를 채운다.) 그러나 나는 그것이 작동해야한다고 생각한다. – Kendrick

답변

5

detailsview는 바인딩 할 데이터베이스 필드를 알지 못합니다. 나는 코드의 기본 값을 필드에 결합하여 설정 템플릿에 텍스트 상자를 변경합니다 :

<InsertItemTemplate> 
    <asp:TextBox ID="txtUserID" runat="server" Text='<%#Bind("UserIDField") %>'></asp:TextBox> 
</InsertItemTemplate> 
<InsertItemTemplate> 
    <asp:TextBox ID="txtUserName" runat="server" Text='<%#Bind("UserNameField") %>'></asp:TextBox> 
</InsertItemTemplate> 

Protected Sub DetailsView_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles DetailsView.DataBound 

    If DetailsView.CurrentMode = DetailsViewMode.Insert Then 

     DirectCast(DetailsView.FindControl("txtUserID"), TextBox).Text=CurrentUID() 
     DirectCast(DetailsView.FindControl("txtUserName"), TextBox).Text=GetUserName(CurrentUID()) 

    End If 

End Sub 
관련 문제