2017-01-11 12 views
0

誰でもこれを解決するのに役立つことができますか?テキストボックスIDとしてデータベースの製品IDを使用して、C#コードの背後にテキストボックスの値を渡そうとしています。
これらのコードは、私は、//入力タイプ= "テキストを使用し、私はいくつかのJavaScript機能を実行するあって、私は、データベースに(PRODID)ストアを使用してIDを設定する必要がcart.aspxcでコードの背後にあるコードに動的IDを渡した値#

 <asp:BoundField ItemStyle-CssClass="layoutBox" HeaderStyle-CssClass="gvHeader" DataField="prodID" HeaderText="PRODUCT" /> 
    <asp:TemplateField HeaderStyle-CssClass="gvHeader" HeaderText="SET QUANTITY"> 
     <ItemTemplate> 
      <div id="divQty"> 
       <img id='Minus-<%# Eval("prodID") %>' class="qtyIcon" src="image/template/minus.jpg" onclick="minusQty(this.id)" /> 
       <input id='<%# Eval("prodID") %>' name='<%# Eval("prodID") %>' type="text" value='<%# Eval("qtyOrder") %>' oninput="noDecimal(this.id);" /> 
       <img id='Plus-<%# Eval("prodID") %>' class="qtyIcon" src="image/template/plus.jpg" onclick="addQty(this.id)" /> 
     </div> 
     </ItemTemplate> 
    </asp:TemplateField> 

のGridViewの下で符号化されます"

今、私はidによってテキストボックスの値にアクセスできないという問題に直面しています。以下はコードの後ろです - cart.aspx.cs:

[Product]テーブルからすべてのprodIDを取得しています。なぜなら、テキストボックスではIDをIDとして使用しているからです。

List<string> getProdID = new List<string>(); 

string sql1 = "SELECT prodID FROM [Product]"; 
SqlConnection con = new SqlConnection(cs); 
SqlCommand cmd1 = new SqlCommand(sql1, con); 

con.Open(); 
SqlDataReader dr1 = cmd1.ExecuteReader(); 
while (dr1.Read()){ 
    getProdID.Add(dr1[0].ToString()); 
} 
dr1.Close(); 
con.Close(); 

私は、各テキストボックスの値を取得しますが、エラーが出てくることを試みた: 「string」は「価値」と拡張子なしのメソッド「値」タイプの最初の引数を受け入れる「という文字列の定義が含まれていません。 '(あなたがusingディレクティブまたはアセンブリ参照が不足している?) を見つけることができる

for(int a = 0; a < getProdID.Count ; a++) 
{ 
    int value = Request.Form[getProdID[a]].Value; 
} 
+0

'name =" qty [<%#Eval( "prodID")%>] "'のように何かしないと、コードの後ろにループしていく量の配列が得られます数量を製品IDと一致させるためにkvpを使用します。 – Pete

+1

int value = Convert.ToInt32(Request.Form [getProdID [a]]); – MMK

+0

@MMK助けてくれてありがとう!それは仕事です! –

答えて

0

まず第一に、あなたはファイルの後ろにコードでアクセスするすべてのコントロールのにrunat = 『サーバー』を持っている必要があります下記をご覧ください。

<input id='<%# Eval("prodID") %>' name='<%# Eval("prodID") %>' type="text" value='<%# Eval("qtyOrder") %>' oninput="noDecimal(this.id);" runat="server" /> 

は、背後にあるコードでテキストボックスにアクセスするには、あなたはOnRowDataBoundイベントまたはちょうどGridView.Rowsをループをフックすることができます:

int indexOfYourTemplateColumn = 0; 
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
    HtmlInputText txt = (e.Row.FindControl("id") as HtmlInputText); 
    string txtValue = txt.Value; 
    } 
} 

foreach(GridViewRow row in GridView1.Rows) { 
if(row.RowType == DataControlRowType.DataRow) { 
    HtmlInputText txt = (row.FindControl("id") as HtmlInputText); 
    string txtValue = txt.Value; 
    } 
} 

はそれが役に立てば幸い!

+0

HTMLタグにrunat = "server"を追加しようとすると、Parseエラーが発生します。コントロールのIDプロパティはタグのID属性と単純な値を使用して設定します。例:しかし、ありがとうございます。 –

関連する問題