2016-10-26 6 views
0

ASP:gridviewオブジェクトを3つ表示するASPXアプリケーションがあります。これらの列の値に基づいて各グリッドビューに表示するSQLiteテーブルから特定の列を選択しました。私が持っている問題は、1つのgridviewです。このグリッドビューはテーブルから6列を引き出し、それらに2つのButtonFieldsと1つのTemplatefieldと共に、その中にtexboxコントロールを表示します。ボタンの1つは、(ユーザーが入力した)テキストボックスからのテキストをテーブルに挿入することになっています。アプリはグリッドビューを更新し、挿入されたデータが列に表示されます。ASPからのsqlデータを更新:Gridview Textbox

protected void gvApproved_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     int rowIndex = Convert.ToInt32(e.CommandArgument); 
     GridViewRow row = gvApproved.Rows[rowIndex]; 
     string name = row.Cells[0].Text; 
     string column = ""; 
     string value = ""; 
     switch (e.CommandName) 
     { 
      case "Close": 
       column = "closed"; 
       value = "yes"; 
       break; 
      case "Score": 
       column = "score"; 
       value = row.Cells[8].Text; 
       break; 
     } 
     SQL_Helper.Update_Row(rowIndex, column, value, name); 
     Refresh_All_Grids(); 
    } 

更新行コマンドは、ケース内に誰も好奇心である:

Iは、テーブルにデータを挿入するために、次の使用している私はvalue = row.Cells[8].ToString()にラインvalue = row.Cells[8].Text;設定

public static void Update_Row(int rowIndex, string updateField, string updateString, string updateName) 
    { 
     string query = "UPDATE applications SET '" + updateField + "' = '" + updateString + "' WHERE name = '" + updateName + "';"; 
     Query_Table(query); 
    } 

それはテーブルに'System.Web.UI.WebControls.DataControlFieldCell'を挿入するので、私はそれが右の列から引っ張っていることを知っていますが、上に書いたままにすると、空の文字列が挿入されます。グリッドビューのテキストボックスから挿入することはできませんか?そうであれば、それを機能させるためには何を変更する必要がありますか?

答えて

0

私は以前に投稿した回答がありましたが、それをさらに調べると、DataGridViewRowではなくGridViewRowで作業していることに気付きました。質問を更新して、DataGridViewについて何も含まないようにする必要があります。 GridViewRow.Cells [8]は私の下の答えで述べたようにValueを持っていません。

私はちょうどこの小さな提案がそれを修正したかどうかを見るためにコメントするつもりでしたが、まだ50人の担当者がいません。 Cell自体の代わりにValueを使用する必要があります。

これは機能しますか?

+0

'row.Cells []。Value 'はクラスの有効なメンバーとして存在しません。 –

+0

@RobertSpearsはい、私はそれを説明するために私の答えを編集しました。 DataGridViewRowを使用していたのにGridViewRowを使用していると思っていました。 –

関連する問題