2011-09-18 1 views
0

ページビューでSQLサーバーを呼び出し、formviewにページビューを設定する5つのレコードを取得するformviewがあります。ページ区切りを移動するときにFormview内のフィールドが変更されない

Webページのレンダリング時に、正常にデータベースに接続し、データセットを入力し、データを返しました。問題は、新しいページに移動すると、データバインドされたフィールドでデータが変更されないということです。ここで

が私のコードです:のpaginateボタンがクリックされたときに

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     conn = new SqlConnection(connstr); 
     ds = new DataSet(); 
     da = new SqlDataAdapter("call to stored proc", conn); 

     try 

     { 
      conn.Open(); 
      da.Fill(ds, "m"); 
      FormView1.DataSource = ds; 
      FormView1.DataKeyNames = new string[] { "PropKey" }; 
      FormView1.DataBind(); 
     } 
     catch (Exception ex) 
     { 
      Result = ex.Message; 
     } 
     finally 
     { 
      conn.Close(); 
     } 
    } 

次私はこれがあります。

protected void FormView1_PageIndexChanging1(object sender, FormViewPageEventArgs e) 
{ 
    FormView1.PageIndex = e.NewPageIndex; 
} 

を助けてください、 おかげ

答えて

1

あなたはデータをバインドする必要があります。下のように新しいページインデックスを設定した直後にFormViewに渡します。

protected void FormView1_PageIndexChanging1(object sender, FormViewPageEventArgs e) 
{ 
    FormView1.PageIndex = e.NewPageIndex; 
    BindFormViewData(); 
} 

ページインデックスの変更時に、データソースを再バインドする必要があるので、FormViewコントロールのみ、アクティブ・レコードのデータを表示し、データソースから任意の他のレコードが格納されていないので、これが必要です。参照:上記のリンクからPaging in a FormView Web Server Control

を:

FormViewコントロールは、データソースコントロールに、または( データセットを含む)ICollectionインターフェイスを実装する任意の データ構造にバインドされている場合、制御は取得データソースのすべてのレコード、 は現在のページのレコードを表示し、残りのレコードは破棄します。 ユーザーが別のページに移動すると、FormViewコントロールは プロセスを繰り返し、別のレコードを表示します。

これが役に立ちます。

+0

FormView1.DataBind()を追加すると、次のページ区切りを選択すると、バインドされるデータがないので、フォームビュー全体が空白になります。 –

+0

DataBindメソッドを呼び出す前にDataSourceを指定していますか? – jdavies

+0

もう一度SQL Serverにアクセスする必要がありますか?完全な接続文字列とストアドプロシージャを追加する必要がありますか、元のデータセットから引き出すことはできますか? –

関連する問題