datagrid 問題,急 100分送

WOLF7571 2003-07-25 10:55:55
為甚麼我不能取到datagrid 單元格的值,黨datagrid 處於編輯狀態時.
我的代碼:
dim txtbox as textbox
dim ts as string
txtbox=ctype(e.item.cells(2).controls(0),textbox)
ts=txtbox.text
為何我取到的值總是原來的值,而不是我修改後的值,謝謝
...全文
15 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
visualcpu 2003-07-27
  • 打赏
  • 举报
回复
你是不是在Page_Load里没有加上这个代码:

if(!IsPostBack)
{
数据绑定
}
xrll 2003-07-27
  • 打赏
  • 举报
回复
if(!IsPostBack){
Bindgrid()
}
happyno7 2003-07-27
  • 打赏
  • 举报
回复
txtbox = CType(e.Item.Cells(2).Controls(0), TextBox)

你试试用
txtbox = CType(e.Item.Cells(2).Controls(1), TextBox)
or
txtbox = CType(e.Item.Cells(2).Controls(2), TextBox)
再不行就用FindControls



WOLF7571 2003-07-27
  • 打赏
  • 举报
回复
code 如下:

<asp:datagrid id="DataGrid1" style="Z-INDEX: 100; LEFT: 12px; POSITION: absolute; TOP: 111px" runat="server" Width="708px" DataKeyField="cl_no" Height="215px" AllowCustomPaging="True" AllowPaging="True" AutoGenerateColumns="False" CellPadding="1" BorderWidth="2px" BorderColor="#C0C0FF"
OnEditCommand="gridedit"
onupdatecommand="gridupdate"
OnCancelCommand="gridcan"
BackColor="#FFFFC0"
AllowSorting="True">
<SelectedItemStyle BorderColor="#C0C000" BackColor="#FF8080"></SelectedItemStyle>
<ItemStyle BackColor="#FFE0C0"></ItemStyle>
<Columns>
<asp:BoundColumn DataField="cl_no" HeaderText="代號"></asp:BoundColumn>
<asp:boundColumn datafield="cl_name" HeaderText="課程名稱"></asp:boundColumn>
<asp:BoundColumn DataField="cl_dat" HeaderText="訓練日期"></asp:BoundColumn>
<asp:BoundColumn DataField="cl_teacher" HeaderText="講師"></asp:BoundColumn>
<asp:BoundColumn DataField="cl_company" HeaderText="顧問公司"></asp:BoundColumn>
<asp:BoundColumn dataField="cl_money" HeaderText="費用"></asp:BoundColumn>
<asp:BoundColumn DataField="cl_num" HeaderText="參加人數"></asp:BoundColumn>
<asp:EditCommandColumn CancelText="取消" EditText="修改" UpdateText="更新" ItemStyle-Wrap="false" HeaderText="編輯" HeaderStyle-Wrap="false"></asp:EditCommandColumn>
</Columns>
</asp:datagrid>

更新過程如下:

Sub gridupdate(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Dim txtbox As TextBox
Dim txtvalue As String
Dim mycomm As System.Data.SqlClient.SqlCommand
Dim sqlcomm As String = "update wb_pocl set cl_name=@cl_name where cl_no=@cl "
txtbox = CType(e.Item.Cells(2).Controls(0), TextBox)
txtvalue = txtbox.Text
MYCONN.Open()
mycomm = New SqlClient.SqlCommand(sqlcomm, MYCONN)
mycomm.Parameters.Add(New SqlClient.SqlParameter("@cl_name", SqlDbType.VarChar, 30))
mycomm.Parameters.Add(New SqlClient.SqlParameter("@cl", SqlDbType.VarChar, 3))
mycomm.Parameters("@cl_name").Value = txtbox.Text
mycomm.Parameters("@cl").Value = DataGrid1.DataKeys(CInt(e.Item.ItemIndex))
mycomm.ExecuteNonQuery()
Me.DataGrid1.EditItemIndex = -1
MYCONN.Close()
DataBind()
end sub
niqiu322 2003-07-25
  • 打赏
  • 举报
回复
ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfSystemWebUIWebControlsDataGridClassUpdateCommandTopic.htm
  • 打赏
  • 举报
回复
gz
niqiu322 2003-07-25
  • 打赏
  • 举报
回复
能不能把程序贴出来看看,
cgmx 2003-07-25
  • 打赏
  • 举报
回复
'错了,应该是如下才对
dim txtbox as textbox
dim ts as string
txtbox=ctype(e.item.cells(2).controls(1),textbox)
ts=txtbox.text

cgmx 2003-07-25
  • 打赏
  • 举报
回复
dim txtbox as textbox
dim ts as string
txtbox=ctype(e.item.cells(2).controls(2),textbox)
ts=txtbox.text
goody9807 2003-07-25
  • 打赏
  • 举报
回复
假设DataGrid的第一列声明如下
<asp:HyperLinkColumn DataTextField="au_id" HeaderText="au_id" DataNavigateUrlField="au_id" DataNavigateUrlFormatString="Edit.aspx?id={0}"></asp:HyperLinkColumn>
读取的时候可以用:
//Items[0]表示第一行,Cells[0]表示第一列,Controls[0]表示Cell中的第一个控件(也只有这个控件可以用)
HyperLink link = (HyperLink)DataGrid1.Items[0].Cells[0].Controls[0]);
Response.Write(link.Text);
至于模板列(TemplateColumn),当然也可以通过DataGrid1.Items[i].Cells[j].Controls[n]来获取,然后转换成原来的控件类型再操作,但是还有个更好的办法,就是用FindControl来查找控件。
FindControl是System.Web.UI.Control的方法,可以根据子控件ID来查找子控件
比如:
假设DataGrid的某一列声明如下
<asp:TemplateColumn>
<ItemTemplate>
<asp:TextBox Runat="server" ID="txtID" Text='<%# DataBinder.Eval(Container.DataItem,"au_id") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
读取方法:
TextBox txt = (TextBox)DataGrid1.Items[1].FindControl("txtID");
Response.Write(txt.Text);




wxyzy 2003-07-25
  • 打赏
  • 举报
回复
txtbox=(TextBox)(e.item.cells(2).Findcontrols(0),"textbox")
BenZ004 2003-07-25
  • 打赏
  • 举报
回复
txtbox=(TextBox)(e.item.cells(2).Findcontrols(0),"textbox")
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2003-07-25 10:55
社区公告

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

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