简单,解释一句代码。

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)是啥意思?

随便谈谈也可以啊,我是新手,请各位大哥多关照啊
...全文
46 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 里面便于记录


62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧