2010-06-06 4 views
1

여기 있습니다. 사용자는 텍스트 상자 (개인 정보 등)에 값을 입력 한 다음 변경 사항 저장 버튼을 누릅니다. 이 텍스트 상자의 값은 SQL 데이터베이스에 저장됩니다.SQL 데이터베이스를 텍스트 상자의 값으로 업데이트하십시오.

문제점은 텍스트 상자의 값을 사용하여 데이터베이스를 업데이트 할 때 페이지가 새로 고쳐지고 텍스트 상자의 값이 손실된다는 것입니다. 또는 오히려 데이터베이스에 이미있는 값으로 돌아갑니다. 데이터베이스의 데이터가 Page_Load의 텍스트 상자에로드됩니다.

변수에 저장된 값을 사용하여 데이터베이스를 업데이트하면 정상적으로 작동합니다. 텍스트 상자의 값으로 업데이트하는 가장 좋은 방법은 무엇입니까?

답변

1

asp:FormView을 사용하고 asp:TextBox에 필요한 열을 바인딩하십시오. 예를 들어

: 당신이로드처럼

<asp:FormView runat="server" ID="FormView1" DataSourceID="SqlDataSource1"> 
    <InsertItemTemplate> 
     <table> 
      <tr> 
       <td> 
        <asp:TextBox runat="server" ID="txtFoo" Text='<%# Bind("foo") %>' /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <asp:TextBox runat="server" ID="txtBar" Text='<%# Bind("bar") %>' /> 
       </td> 
      </tr> 
     </table> 
    </InsertItemTemplate> 
</asp:FormView> 
<asp:SqlDataSource runat="server" ID="SqlDataSource1" InsertCommand="INSERT INTO table1 (foo, bar) VALUES (@foo, @bar)" ConnectionString="<%$ ConnectionStrings:MyConnStringNameFromWebConfig%>"> 
    <InsertParameters> 
     <asp:FormParameter Name="foo" FormField="foo" DbType="String" /> 
     <asp:FormParameter Name="bar" FormField="bar" DbType="String" /> 
    </InsertParameters> 
</asp:SqlDataSource> 

asp:FormView 이상한 행동 순간의 번호를 가지고, 내 경험을 공유하는 것이 행복 할 것이다, 당신의 질문을 자유롭게 작성하여

+0

좀 더 설명해 주시겠습니까? –

+0

@Sir 잠시만 기다려주세요 – abatishchev

1

소리가 난다 페이지가 포스트 백인지 확인하지 않고 Page_Load의 데이터 이 경우 다음을 시도해보십시오.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     BindYouDataFromDB(); 
    } 
} 
+0

안녕하세요, 데이터 테이블을로드 할 때 페이지 테이블에 데이터 테이블이 채워 지지만 행이 없다고 말하면서이 작업을 수행합니까? –

+0

데이터를 변경할 때마다 Bind 메서드를 호출해야하며 데이터베이스에서 데이터를 새로 고쳐야합니다. – Thea

관련 문제