我在实现DataGrid的更新的时候遇到了两个问题,一个点击修改后,字段的宽度不能控制,使布面变得很难看,二个是总是不能获取到更改后的值.原代码如下:
Sub UpdateData(sender As Object,e As DataGridCommandEventArgs)
Dim tOldID,tNewID As Integer
Dim tName,tTele,tFax,tPostCode,tAddress As String
tOldID = ShowGrid.DataKeys(e.Item.ItemIndex)
Dim TB(6) As TextBox
TB(1) = e.Item.Cells(0).Controls(0)
TB(2) = e.Item.Cells(1).Controls(0)
TB(3) = e.Item.Cells(2).Controls(0)
TB(4) = e.Item.Cells(3).Controls(0)
TB(5) = e.Item.Cells(4).Controls(0)
TB(6) = e.Item.Cells(5).Controls(0)
tNewID = val(TB(1).Text)
tName = Trim(TB(2).Text)
tTele = Trim(TB(3).Text)
tFax = Trim(TB(4).Text)
tPostCode = Trim(TB(5).Text)
tAddress = Trim(TB(6).Text)
OpenDatabase
sSql = "Update DFJG Set ID = " & Str(tNewID) & ",Name = "
sSql &= tName & ",Tele=" & tTele & ",Fax=" & tFax
sSql &= ",PostCode=" & tPostCode &",Address="
sSql &= tAddress & " Where ID =" & Str(tOldID)
Cmd = New SqlCommand(sSql,Conn)
Cmd.ExecuteNonQuery()
sstr.text =sSql
CloseDatabase
ShowGrid.EditItemIndex = -1
ShowData()
End Sub
请大家帮个忙,小弟感激不尽...
字段的宽度不能控制
要在ItemCreated事件中完成,以下取自我自己做的项目
private void grid_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.EditItem)
{
TextBox txt = (TextBox)(e.Item.Cells[1].FindControl("tbCaption"));
txt.Width = Unit.Pixel(100); // 控制文本框的宽度
txt.CssClass = "tb";
}
if(e.Item.ItemType == ListItemType.Footer)
{
TextBox txt = (TextBox)(e.Item.FindControl("tbCaption1"));
txt.Width = Unit.Pixel(120);
txt.CssClass = "tb";
DropDownList t2 = (DropDownList)e.Item.FindControl("ddlCategory");
t2.CssClass = "tb";
}
}
不能获取到更改后的值
你要注意以下几点:
1、生成的SQL语句能否在查询分析器中正确执行,如不能,则是SQL语句本身的问题
2、最后绑定数据了没,更新之后要重新绑定数据才行
3、另外,你的代码怎么显得如此乱,以后维护岂不是成问题。我是这样做的
private void grid_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
Label l = (Label)e.Item.Cells[0].FindControl("lblCateID");
TextBox rn2 = (TextBox)e.Item.FindControl("tbCaption");
// 验证地区名称不能为空
if(rn2.Text.Trim() == "")
{
Page.RegisterStartupScript("Validator","<script language=javascript>alert(分类名称不能为空!!);</script>");
return;
}
// 执行更新
PhotoLib.PicturesDB pictures = new PhotoLib.PicturesDB();
pictures.UpdateCategory(l.Text,rn2.Text.Trim());
// 取消编辑状态,重新绑定数据
grid.EditItemIndex = -1;
BindGrid();
// 刷新树的显示
Page.RegisterStartupScript("refresh","<script language=javascript>parent.document.location.reload();</script>");
}
希望对你有帮助