2012-01-04 15 views
0

私のasp.netアプリケーションでは、私はfileuploadコントロールでテンプレート列を追加したgridviewコントロールを持っています。 ページ内のgridviewの外側には、何らかのタスクを実行するボタンコントロールがあります。 私の問題は、私がボタンをクリックすると、私がgridviewでファイルアップロードコントロールを介して選択したファイルがリフレッシュされ、ファイルパスが消えてしまうことです。 ボタンをクリックしたときに、グリッド表示を更新しないようにするにはどうすればいいですか? ボタンがグリッド内にありません。GridviewのAsp.netポストバック

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      DataTable dt = new DataTable(); 

      DataColumn dc1 = new DataColumn("id", typeof(string)); 
      dt.Columns.Add(dc1); 
      dr = dt.NewRow(); 
      dr[0] = "abcd"; 
      dt.Rows.Add(dr); 
      DataSet ds = new DataSet(); 
      ds.Tables.Add(dt); 
      GridView1.DataSource = ds; 
      GridView1.DataBind(); 
     } 
    } 
+0

グリッドビューの外側にあるボタンをクリックすると、ポストバックが発生しますか? – Pavan

+0

ASP.NET Ajaxを使用している場合、別の更新パネルにグリッドビューを配置します。 – Pavan

答えて

0

ファイルアップロードコントロールはposkback上のファイルパスを維持するようには設計されていませんが、回避策を講じることができます。セッション変数にファイルパスを格納しようとしています..これはちょっと不器用ですが、これを行う唯一の方法のようです。 。あなたはあなたの努力を軽減するために行うことができますもう一つはあなたのためにこれを管理しますユーザーコントロールを作成することです...

//If first time page is submitted and we have file in FileUpload control but not in session 
     // Store the values to SEssion Object 
     if (Session["FileUpload1"] == null && FileUpload1.HasFile) 
{ 
Session["FileUpload1"] = FileUpload1; 
Label1.Text = FileUpload1.FileName; 
} 
// Next time submit and Session has values but FileUpload is Blank 
     // Return the values from session to FileUpload 
     else if (Session["FileUpload1"] != null && (! FileUpload1.HasFile)) 
{ 
FileUpload1 = (FileUpload) Session["FileUpload1"]; 
Label1.Text = FileUpload1.FileName; 
} 
// Now there could be another sictution when Session has File but user want to change the file 
     // In this case we have to change the file in session object 
     else if (FileUpload1.HasFile) 
{ 
Session["FileUpload1"] = FileUpload1; 
Label1.Text = FileUpload1.FileName; 
} 

詳細は

http://www.codeproject.com/Tips/101834/How-to-Maintain-FileUpload-Control-s-State-after-P.aspx

よろしく

0

ファイルアップロードコントロールは、ポストバックの間に値を保持しません。 GridViewには、FileUploadコントロールを使用してアップロードされたファイルのパスを保持するラベルフィールドを維持することができます。 GridViewの外側にあるボタンをクリックすると、FileUploadコントロールの値がlableにコピーされます。