DataGrid的问题困扰我好些天了,是关于按纽列中的编辑、更新、取消按纽怎么才能好用!

lurel 2004-05-14 08:51:07
我在DataGrid添加了一个这样的按纽列,可以添加完,在这列只显示[编辑]这个按纽或超链接,不知道[更新]、[取消]跑哪去了,怎么才能把他们调出来,还有我点击[编辑],按道理来说这行应该变为编辑状态呀,即EditItemIndex的值应该是我点击[编辑]按纽所在的行的index,可以我点击后没任何反应,难道.net提供这个按纽还要我自己写edit事件指定index?那和普通的按纽有什么区别呀,实在搞不懂,我自己弄了两天了,实在不明白,还有[更新]、[取消]这两个按纽怎么调出来呀。
...全文
112 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sa9111 2004-06-07
  • 打赏
  • 举报
回复
呵呵
楼住也是菜鸟啊,偶一开始的时候也是象你那样.不过看看例子就知道了,你查一下在线帮助就有的.这些功能都要写代码的,不过不是很多的.
KOON 2004-05-14
  • 打赏
  • 举报
回复
quickstart是最简单也是最好的,就在.NET SDK里面,仔细看看吧
acewang 2004-05-14
  • 打赏
  • 举报
回复
<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>

<html>
<script runat="server">

' The Cart and CartView objects temporarily store the data source
' for the DataGrid control while the page is being processed.
Dim Cart As DataTable = New DataTable()
Dim CartView As DataView

Sub Page_Load(sender As Object, e As EventArgs)

' With a database, use an select query to retrieve the data. Because
' the data source in this example is an in-memory DataTable, retrieve
' the data from session state if it exists; otherwise create the data
' source.
GetSource()

' The DataGrid control maintains state between posts to the server;
' it only needs to be bound to a data source the first time the page
' is loaded or when the data source is updated.
If Not IsPostBack Then

BindGrid()

End If

End Sub

Sub ItemsGrid_Edit(sender As Object, e As DataGridCommandEventArgs)

' Set the EditItemIndex property to the index of the item clicked
' in the DataGrid control to enable editing for that item. Be sure
' to rebind the DateGrid to the data source to refresh the control.
ItemsGrid.EditItemIndex = e.Item.ItemIndex
BindGrid()

End Sub

Sub ItemsGrid_Cancel(sender As Object, e As DataGridCommandEventArgs)

' Set the EditItemIndex property to -1 to exit editing mode.
' Be sure to rebind the DateGrid to the data source to refresh
' the control.
ItemsGrid.EditItemIndex = -1
BindGrid()

End Sub

Sub ItemsGrid_Update(sender As Object, e As DataGridCommandEventArgs)

' Retrieve the text boxes that contain the values to update.
' For bound columns, the edited value is stored in a TextBox.
' The TextBox is the 0th control in a cell's Controls collection.
' Each cell in the Cells collection of a DataGrid item represents
' a column in the DataGrid control.
Dim qtyText As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox)
Dim priceText As TextBox = CType(e.Item.Cells(4).Controls(0), TextBox)

' Retrieve the updated values.
Dim item As String = e.Item.Cells(2).Text
Dim qty As String = qtyText.Text
Dim price As String = priceText.Text

Dim dr As DataRow

' With a database, use an update command to update the data.
' Because the data source in this example is an in-memory
' DataTable, delete the old row and replace it with a new one.

' Remove the old entry and clear the row filter.
CartView.RowFilter = "Item='" & item & "'"
If CartView.Count > 0 Then

CartView.Delete(0)

End If
CartView.RowFilter = ""

' ***************************************************************
' Insert data validation code here. Be sure to validate the
' values entered by the user before converting to the appropriate
' data types and updating the data source.
' ***************************************************************

' Add the new entry.
dr = Cart.NewRow()
dr(0) = Convert.ToInt32(qty)
dr(1) = item

' If necessary, remove the '$' character from the price before
' converting it to a Double.
If price.Chars(0) = "$" Then

dr(2) = Convert.ToDouble(price.Substring(1))

Else

dr(2) = Convert.ToDouble(price)

End If

Cart.Rows.Add(dr)

' Set the EditItemIndex property to -1 to exit editing mode.
' Be sure to rebind the DateGrid to the data source to refresh
' the control.
ItemsGrid.EditItemIndex = -1
BindGrid()

End Sub

Sub BindGrid()

' Set the data source and bind to the Data Grid control.
ItemsGrid.DataSource = CartView
ItemsGrid.DataBind()

End Sub

Sub GetSource()

' For this example, the data source is a DataTable that is stored
' in session state. If the data source does not exist, create it;
' otherwise, load the data.
If Session("ShoppingCart") Is Nothing Then

' Create the sample data.
Dim dr As DataRow

' Define the columns of the table.
Cart.Columns.Add(new DataColumn("Qty", GetType(Int32)))
Cart.Columns.Add(new DataColumn("Item", GetType(String)))
Cart.Columns.Add(new DataColumn("Price", GetType(Double)))

' Store the table in session state to persist its values
' between posts to the server.
Session("ShoppingCart") = Cart

' Populate the DataTable with sample data.
Dim i As Integer

For i = 1 To 9

dr = Cart.NewRow()
If (i Mod 2) <> 0 Then

dr(0) = 2

Else

dr(0) = 1

End If

dr(1) = "Item " & i.ToString()
dr(2) = (1.23 * (i + 1))
Cart.Rows.Add(dr)

Next i

Else

' Retrieve the sample data from session state.
Cart = CType(Session("ShoppingCart"), DataTable)

End If

' Create a DataView and specify the field to sort by.
CartView = New DataView(Cart)
CartView.Sort="Item"

Return

End Sub

Sub ItemsGrid_Command(sender As Object, e As DataGridCommandEventArgs)

Select (CType(e.CommandSource, LinkButton)).CommandName

Case "Delete"
DeleteItem(e)

' Add other cases here, if there are multiple ButtonColumns in
' the DataGrid control.

Case Else
' Do nothing.

End Select

End Sub

Sub DeleteItem(e As DataGridCommandEventArgs)

' e.Item is the table row where the command is raised. For bound
' columns, the value is stored in the Text property of a TableCell.
Dim itemCell As TableCell = e.Item.Cells(2)
Dim item As String = itemCell.Text

' Remove the selected item from the data source.
CartView.RowFilter = "Item='" & item + "'"
If CartView.Count > 0 Then

CartView.Delete(0)

End If

CartView.RowFilter = ""

' Rebind the data source to refresh the DataGrid control.
BindGrid()

End Sub

</script>
guying999 2004-05-14
  • 打赏
  • 举报
回复
同意版主的~:)
vzxq 2004-05-14
  • 打赏
  • 举报
回复
例子太多了,找一个看看就明白了,很简单的。
pierven 2004-05-14
  • 打赏
  • 举报
回复
更新和取消按钮是在你按了编辑按钮之后,当这行处于编辑状态时才出现的
listhome 2004-05-14
  • 打赏
  • 举报
回复
http://dotnet.aspx.cc/ShowDetail.aspx?id=8ADE535F-AD40-4DE3-A962-A64B4FAF12C4
孟子大哥的!
smx717616 2004-05-14
  • 打赏
  • 举报
回复
去 FAQ 看看,好多关于 Datagrid 的例子
一人一世界 2004-05-14
  • 打赏
  • 举报
回复
同楼上的。
acewang 2004-05-14
  • 打赏
  • 举报
回复
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>

<html>
<script runat="server">

// The Cart and CartView objects temporarily store the data source
// for the DataGrid control while the page is being processed.
DataTable Cart = new DataTable();
DataView CartView;

void Page_Load(Object sender, EventArgs e)
{

// With a database, use an select query to retrieve the data. Because
// the data source in this example is an in-memory DataTable, retrieve
// the data from session state if it exists; otherwise, create the data
// source.
GetSource();

// The DataGrid control maintains state between posts to the server;
// it only needs to be bound to a data source the first time the page
// is loaded or when the data source is updated.
if (!IsPostBack)
{

BindGrid();

}

}

void ItemsGrid_Edit(Object sender, DataGridCommandEventArgs e)
{

// Set the EditItemIndex property to the index of the item clicked
// in the DataGrid control to enable editing for that item. Be sure
// to rebind the DateGrid to the data source to refresh the control.
ItemsGrid.EditItemIndex = e.Item.ItemIndex;
BindGrid();

}

void ItemsGrid_Cancel(Object sender, DataGridCommandEventArgs e)
{

// Set the EditItemIndex property to -1 to exit editing mode.
// Be sure to rebind the DateGrid to the data source to refresh
// the control.
ItemsGrid.EditItemIndex = -1;
BindGrid();

}

void ItemsGrid_Update(Object sender, DataGridCommandEventArgs e)
{

// Retrieve the text boxes that contain the values to update.
// For bound columns, the edited value is stored in a TextBox.
// The TextBox is the 0th control in a cell's Controls collection.
// Each cell in the Cells collection of a DataGrid item represents
// a column in the DataGrid control.
TextBox qtyText = (TextBox)e.Item.Cells[3].Controls[0];
TextBox priceText = (TextBox)e.Item.Cells[4].Controls[0];

// Retrieve the updated values.
String item = e.Item.Cells[2].Text;
String qty = qtyText.Text;
String price = priceText.Text;

DataRow dr;

// With a database, use an update command to update the data.
// Because the data source in this example is an in-memory
// DataTable, delete the old row and replace it with a new one.

// Remove the old entry and clear the row filter.
CartView.RowFilter = "Item='" + item + "'";
if (CartView.Count > 0)
{
CartView.Delete(0);
}
CartView.RowFilter = "";

// ***************************************************************
// Insert data validation code here. Be sure to validate the
// values entered by the user before converting to the appropriate
// data types and updating the data source.
// ***************************************************************

// Add the new entry.
dr = Cart.NewRow();
dr[0] = Convert.ToInt32(qty);
dr[1] = item;

// If necessary, remove the '$' character from the price before
// converting it to a Double.
if(price[0] == '$')
{
dr[2] = Convert.ToDouble(price.Substring(1));
}
else
{
dr[2] = Convert.ToDouble(price);
}

Cart.Rows.Add(dr);

// Set the EditItemIndex property to -1 to exit editing mode.
// Be sure to rebind the DateGrid to the data source to refresh
// the control.
ItemsGrid.EditItemIndex = -1;
BindGrid();

}

void BindGrid()
{

// Set the data source and bind to the Data Grid control.
ItemsGrid.DataSource = CartView;
ItemsGrid.DataBind();

}

void GetSource()
{

// For this example, the data source is a DataTable that is stored
// in session state. If the data source does not exist, create it;
// otherwise, load the data.
if (Session["ShoppingCart"] == null)
{

// Create the sample data.
DataRow dr;

// Define the columns of the table.
Cart.Columns.Add(new DataColumn("Qty", typeof(Int32)));
Cart.Columns.Add(new DataColumn("Item", typeof(String)));
Cart.Columns.Add(new DataColumn("Price", typeof(Double)));

// Store the table in session state to persist its values
// between posts to the server.
Session["ShoppingCart"] = Cart;

// Populate the DataTable with sample data.
for (int i = 1; i <= 9; i++)
{
dr = Cart.NewRow();
if (i % 2 != 0)
{
dr[0] = 2;
}
else
{
dr[0] = 1;
}
dr[1] = "Item " + i.ToString();
dr[2] = (1.23 * (i + 1));
Cart.Rows.Add(dr);
}

}

else
{

// Retrieve the sample data from session state.
Cart = (DataTable)Session["ShoppingCart"];

}

// Create a DataView and specify the field to sort by.
CartView = new DataView(Cart);
CartView.Sort="Item";

return;

}

void ItemsGrid_Command(Object sender, DataGridCommandEventArgs e)
{

switch(((LinkButton)e.CommandSource).CommandName)
{

case "Delete":
DeleteItem(e);
break;

// Add other cases here, if there are multiple ButtonColumns in
// the DataGrid control.

default:
// Do nothing.
break;

}

}

void DeleteItem(DataGridCommandEventArgs e)
{

// e.Item is the table row where the command is raised. For bound
// columns, the value is stored in the Text property of a TableCell.
TableCell itemCell = e.Item.Cells[2];
string item = itemCell.Text;

// Remove the selected item from the data source.
CartView.RowFilter = "Item='" + item + "'";
if (CartView.Count > 0)
{
CartView.Delete(0);
}
CartView.RowFilter = "";

// Rebind the data source to refresh the DataGrid control.
BindGrid();

}

</script>
smx717616 2004-05-14
  • 打赏
  • 举报
回复
当然了
datagrid1.editindex=e.item.index
差不多吧
hbzxf 2004-05-14
  • 打赏
  • 举报
回复
不要着急,其实哪个功能是所谓的开关功能,点编辑,会出现更新和取消,隐藏了编辑,同理
hychieftain 2004-05-14
  • 打赏
  • 举报
回复
http://samples.gotdotnet.com/quickstart/aspplus/samples/webforms/ctrlref/webctrl/datagrid/doc_datagrid.aspx
lsypenghong 2004-05-14
  • 打赏
  • 举报
回复
up

62,046

社区成员

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

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

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

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