简单,解释一句代码。

Allan168 2004-05-06 05:56:53
我在一本书(Asp.net电子商务入门经典)中看到关于在DataGrid控件中修改数据

在DataGrid控件的UpdateCommand事件下,有这么一句代码:

Dim quantity As String = CType(e.Item.Cells(2).Controls(0),TextBox).Text

请问这句代码是什么意思啊?特别是e.Item.Cells(2).Controls(0)是啥意思?

随便谈谈也可以啊,我是新手,请各位大哥多关照啊
...全文
15 14 点赞 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
1979xt 2004-05-06
All right!
  • 打赏
  • 举报
回复
cowbi 2004-05-06
呵呵,给分:P,不辛苦厚颜而已.我马上要两个"裤衩"了
那我就再说一下,DataGrid是进入Asp.Net殿堂的第一道大门砍,我这么说也没用,关键自己找到环境多练练,自然就觉得这东东很好玩啦
  • 打赏
  • 举报
回复
Allan168 2004-05-06
说完了,还可以说啊。
  • 打赏
  • 举报
回复
jingfeng198 2004-05-06
前面的人都說完了
  • 打赏
  • 举报
回复
Allan168 2004-05-06
我试试,谢谢你,辛苦了啊
  • 打赏
  • 举报
回复
cowbi 2004-05-06
IIS和.NET Framework总装了吧,不装IDE也能编译
  • 打赏
  • 举报
回复
cowbi 2004-05-06
((System.Web.UI.WebControls.TextBox)e.Item.Cells[2].Controls[0]).Text;
一般都是这样用的,你单击哪行的Edit按钮,事件发生在那一行
看你是要一次更新所有的行,一般这样的情况很少,还是只更新某一特定行
Controls[0]的意思我不太明白,看看有没有大侠解释吧,反正一般都这样用,不这样用出错:P
  • 打赏
  • 举报
回复
Allan168 2004-05-06
那e.Item.Cells(2).Controls(0)中的.Controls(0)是什么意思呢?

我刚开始,还没装.net工具呢。

  • 打赏
  • 举报
回复
listhome 2004-05-06
大家好快,我来混分!
  • 打赏
  • 举报
回复
cowbi 2004-05-06
<%@ Import Namespace="System.Data" %>

<html>

<script language="C#" runat="server">

DataTable Cart;
DataView CartView;

void Page_Load(Object sender, EventArgs e) {
if (Session["DG6_ShoppingCart"] == null) {
Cart = new DataTable();
Cart.Columns.Add(new DataColumn("Qty", typeof(string)));
Cart.Columns.Add(new DataColumn("Item", typeof(string)));
Cart.Columns.Add(new DataColumn("Price", typeof(string)));
Session["DG6_ShoppingCart"] = Cart;

// first load -- prepopulate with some data
for (int i=1; i<5; i++) {
DataRow dr = Cart.NewRow();
dr[0] = ((int)(i%2)+1).ToString();
dr[1] = "Item " + i.ToString();
dr[2] = ((double)(1.23 * (i+1))).ToString();
Cart.Rows.Add(dr);
}
}
else {
Cart = (DataTable)Session["DG6_ShoppingCart"];
}

CartView = new DataView(Cart);
CartView.Sort = "Item";
if (!IsPostBack) {
BindGrid();
}
}

public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e) {
MyDataGrid.EditItemIndex = (int)e.Item.ItemIndex;
BindGrid();
}

public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e) {
MyDataGrid.EditItemIndex = -1;
BindGrid();
}

public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) {
// For bound columns the edited value is stored in a textbox,
// and the textbox is the 0th element in the column's cell
string item = e.Item.Cells[1].Text;
string qty = ((System.Web.UI.WebControls.TextBox)
e.Item.Cells[2].Controls[0]).Text;
string price = ((System.Web.UI.WebControls.TextBox)
e.Item.Cells[3].Controls[0]).Text;

// with a database, we'd use an update command. Since we're using an in-memory
// DataTable, we'll delete the old row and replace it with a new one
//remove old entry
CartView.RowFilter = "Item='"+item+"'";
if (CartView.Count > 0) {
//item exists in cart
CartView.Delete(0);
}
CartView.RowFilter = "";

//add new entry
DataRow dr = Cart.NewRow();
dr[0] = qty;
dr[1] = item;
dr[2] = price;
Cart.Rows.Add(dr);

MyDataGrid.EditItemIndex = -1;
BindGrid();
}

public void BindGrid() {
MyDataGrid.DataSource = CartView;
MyDataGrid.DataBind();
}

</script>

<body style="font: 10pt verdana">

<form runat="server">

<h3><font face="Verdana">Using an Edit Command Column in DataGrid</font></h3>

<asp:DataGrid id="MyDataGrid" runat="server"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
OnEditCommand="MyDataGrid_Edit"
OnCancelCommand="MyDataGrid_Cancel"
OnUpdateCommand="MyDataGrid_Update"
AutoGenerateColumns="false"
>

<Columns>
<asp:EditCommandColumn
EditText="Edit"
CancelText="Cancel"
UpdateText="Update"
ItemStyle-Wrap="false"
HeaderText="Edit Command Column"
HeaderStyle-Wrap="false"
/>
<asp:BoundColumn HeaderText="Item" ReadOnly="true" DataField="Item"/>
<asp:BoundColumn HeaderText="Quantity" DataField="Qty"/>
<asp:BoundColumn HeaderText="Price" DataField="Price"/>
</Columns>
</asp:DataGrid>

</form>

</body>
</html>

把上面那段代码粘上去,运行一下,你就能理解了:)
  • 打赏
  • 举报
回复
Allan168 2004-05-06
我现在想修改每列的值,而不单是第三列,该怎么办呀?

  • 打赏
  • 举报
回复
Allan168 2004-05-06
那e.Item.Cells(2).Controls(0)中的.Controls(0)是什么意思呢?
  • 打赏
  • 举报
回复
QingYuan2008 2004-05-06
cowbi(庆宝宝)
说完了
  • 打赏
  • 举报
回复
cowbi 2004-05-06
e.Item.Cells(2).Controls(0)应该是取得你的Item的第三列的值

CType(e.Item.Cells(2).Controls(0),TextBox).Text
发生UpdateCommand事件之后,把那个转换成TextBox控件
这个就是UpdateCommand嘛,然后负在 quantity 里面便于记录


  • 打赏
  • 举报
回复
相关推荐
发帖
.NET社区
加入

5.9w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2004-05-06 05:56
社区公告
暂无公告