asp.net 动态生成Table控件如何获取每一个单元格的值
我能够动态的生成Table,并将数据显示在上面,可是获取值的时候只能获取到标题行。敢问要怎么才能获取的每一个格子里面的数据。
代码如下:
aspx:
<asp:Button ID="btn_in" runat="server" Text="为选中商品批量进货"
onclick="Button2_Click" />
<asp:Table ID="datatable1" runat="server" BackColor="White" BorderColor="#CC9966"
BorderStyle="None" BorderWidth="1px" Width="100%" >
<asp:TableHeaderRow BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" >
<asp:TableHeaderCell>
选则
</asp:TableHeaderCell>
<asp:TableHeaderCell>
编号
</asp:TableHeaderCell>
<asp:TableHeaderCell>
商品名称
</asp:TableHeaderCell>
<asp:TableHeaderCell>
商品编号
</asp:TableHeaderCell>
<asp:TableHeaderCell>
商品分类
</asp:TableHeaderCell>
<asp:TableHeaderCell>
规格
</asp:TableHeaderCell>
<asp:TableHeaderCell>
单位
</asp:TableHeaderCell>
<asp:TableHeaderCell>
库存
</asp:TableHeaderCell>
<asp:TableHeaderCell>
仓库
</asp:TableHeaderCell>
<asp:TableHeaderCell>
供应商
</asp:TableHeaderCell>
</asp:TableHeaderRow>
</asp:Table>
aspx.cs:
private static string sql = "";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
sql = "SELECT Goods.Gid, Goods.Gname, Goods.GNO, GoodsCategory.GCName, Goods.Gformat, Goods.GUnit, Goods.GInventory, Goods.Gware, WareHouse.name, Supplier.Sname FROM WareHouse INNER JOIN Goods ON WareHouse.id = Goods.Gware INNER JOIN Supplier ON Goods.Gproduce = Supplier.Sid INNER JOIN GoodsCategory ON Goods.GCateGary = GoodsCategory.GCid";
DataBindTable(sql);
}
}
private void DataBindTable(string sql)
{
DataTable dt = new DataTable();
BaseClass bs = new BaseClass();
dt = bs.readData(sql);
for (int i = 1; i < datatable1.Rows.Count; i++)
{
datatable1.Rows[i].Cells.Clear();
}
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
TableRow row = new TableRow();
TableCell[] cells = new TableCell[10];
for (int mm = 0; mm < 10; mm++)
{
cells[mm] = new TableCell();
}
CheckBox CHB = new CheckBox();
CHB.ID = "CHB";
cells[0].Controls.Add(CHB);
cells[1].Text = dt.Rows[i]["Gid"].ToString();
cells[2].Text = dt.Rows[i]["Gname"].ToString();
cells[3].Text = dt.Rows[i]["GNO"].ToString();
cells[4].Text = dt.Rows[i]["GCName"].ToString();
cells[5].Text = dt.Rows[i]["Gformat"].ToString();
cells[6].Text = dt.Rows[i]["GUnit"].ToString();
cells[7].Text = dt.Rows[i]["GInventory"].ToString();
cells[8].Text = dt.Rows[i]["name"].ToString();
cells[9].Text = dt.Rows[i]["Sname"].ToString();
for (int j = 0; j < cells.Length; j++)
{
row.Cells.Add(cells[j]);
}
datatable1.Rows.Add(row);
}
}
}
protected void Button2_Click(object sender, EventArgs e)
{
if (BaseClass.getIntFormatData(txt_num.Text) == true)
{
Response.Write(datatable1.Rows.Count);
#region 进货
BaseClass bs = new BaseClass();
UserInfo user = (UserInfo)Session["user"];
bool flag = true;
foreach (TableRow item in datatable1.Rows)
{
CheckBox check = (CheckBox)item.FindControl("CHB");
if (check != null && check.Checked == true)
{
string sql = "update goods set ginventory=" + (int.Parse(item.Cells[7].Text) + int.Parse(txt_num.Text)) + " where gid= " + int.Parse(item.Cells[1].Text);
string sql2 = "insert into riaddGoods(rigid,rinum,ritime,ricomment,riname,rimark)values(" + int.Parse(item.Cells[1].Text) + "," + int.Parse(txt_num.Text)
+ ",'" + DateTime.Now.ToString("yyyy-MM-dd") + "','" + txt_comment.Text + "','" + user.workid + "','" + "购买入库" + "')";
try
{
bs.execSql(sql);
bs.execSql(sql2);
}
catch
{
flag = false;
}
}
}
if (flag == false)
{
Response.Write(Message.MessageBox("进货有失败信息,请联系管理员"));
}
else
{
Response.Write(Message.MessageBox("进货成功!"));
}
#endregion
}
else
{
Response.Write(Message.MessageBox("请输入合理的数据后在进行操作!"));
}
}
我已经测试输出,这个行只有标题行,可是从数据库读出来的数据显示在表格里面的数据,却不能获取到。