将动态id传递给c#后面的代码

时间:2017-01-11 16:37:01

标签: javascript c# asp.net code-behind

任何人都可以帮忙解决这个问题吗?我试图通过使用数据库的产品ID作为文本框ID,将文本框的值传递给后面的C#代码。
这些代码在cart.aspx

的GridView下编码
     <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>

我执行了一些javascript函数,我必须通过在数据库中使用(prodID)存储来设置id,所以我使用// input type =“text”。

现在我遇到一个问题,即我无法通过其ID访问文本框的值。下面是代码 - cart.aspx.cs:

我正在从[Product]表中检索所有prodID,因为文本框正在将它们用作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'不包含'Value'的定义,也没有扩展方法'Value'接受'string'类型的第一个参数 (您是否缺少using指令或程序集引用?)

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

1 个答案:

答案 0 :(得分:0)

首先,您需要 runat =&#34;服务器&#34; ,以便所有控件在代码隐藏文件中访问它。请参阅下文

<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;
   }
 }

希望它有所帮助!!