郁闷死了,这个怎么点击"编辑"按钮没反应?????
要怎么设置EditCommandColumn??要如何修改CS代码???这是ASPX文件:<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplicationCSharp.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 24px; POSITION: absolute; TOP: 24px" runat="server"
BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="4"
AutoGenerateColumns="False" DataKeyField="CTNO">
<FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle>
<ItemStyle ForeColor="#330099" BackColor="White"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle>
<Columns>
<asp:EditCommandColumn ButtonType="PushButton" UpdateText="更新" HeaderText="编辑" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
<asp:BoundColumn DataField="ctno" HeaderText="诚腾编号"></asp:BoundColumn>
<asp:BoundColumn DataField="name" HeaderText="品名"></asp:BoundColumn>
<asp:BoundColumn DataField="CAVITYNO" HeaderText="穴数"></asp:BoundColumn>

</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="#330099" BackColor="#FFFFCC"></PagerStyle>
</asp:DataGrid>
</form>
</body>
</HTML>
这是CS代码:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面

if (!IsPostBack)
{
BindGridToSource();
}
} private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex = e.Item.ItemIndex;
BindGridToSource();
} private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex = -1;
BindGridToSource();
}
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{

OracleConnection conn=new OracleConnection("Data Source=wk;user id=wk;password=yourpassword");
string UpdateCmd = "UPDATE mould set NAME=:NAME,CAVITYNO=:CAVITYNO where ctno=:CTNO";
OracleCommand MyCommand=new OracleCommand(UpdateCmd,conn); MyCommand.Parameters.Add(new OracleParameter("CTNO", OracleType.Int32));
MyCommand.Parameters.Add(new OracleParameter("NAME", OracleType.VarChar, 50));
MyCommand.Parameters.Add(new OracleParameter("CAVITYNO", OracleType.VarChar, 20));
            MyCommand.Parameters["CTNO"].Value = DataGrid1.DataKeys[e.Item.ItemIndex];
string[] Cols = new string[] {"CTNO", "NAME", "CAVITYNO"};

// 取得 TableCell 物件的数目,也就是每一数据列之储存格的数目(等於 DataGrid 伺服器控制项中数据行的数目)
int NumCols = e.Item.Cells.Count;

// 略过第一栏与第二栏。因为第一栏是按钮,第二栏已在之前取得。
for (int i = 2; i<= NumCols - 1; i++)
{
TextBox CurrentTextBox = (TextBox)e.Item.Cells[i].Controls[0];
string ColValue = CurrentTextBox.Text;
MyCommand.Parameters[Cols[i - 1]].Value = ColValue;
} // 开启连接

MyCommand.Connection.Open();

MyCommand.ExecuteNonQuery();
DataGrid1.EditItemIndex = -1;
MyCommand.Connection.Close();
BindGridToSource();
}
private void BindGridToSource()
{
OracleConnection conn=new OracleConnection("Data Source=wk;user id=wk;password=yourpassword");
string mySelectQuery = "SELECT CTNO,NAME,CAVITYNO FROM mould";
OracleDataAdapter myCommand = new OracleDataAdapter(mySelectQuery,conn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "mould");
                DataGrid1.DataSource = ds.Tables["mould"].DefaultView;
DataGrid1.DataBind();


}

解决方案 »

  1.   

    怎么没有看到有把DataGrid的EditCommand事件与DataGrid1_EditCommand事件处理程序关联起来的代码吗?InitializeComponents方法中有吗?如果没有的话就丢了,你需要关联一下。
      

  2.   

    参考
    http://singlepine.cnblogs.com/articles/266538.html

    <asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 24px; POSITION: absolute; TOP: 24px" runat="server" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="4" AutoGenerateColumns="False" DataKeyField="CTNO">
    改为
    <asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 24px; POSITION: absolute; TOP: 24px" runat="server" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="4" AutoGenerateColumns="False" DataKeyField="CTNO"
     OnEditCommand="DataGrid1_EditCommand" OnCancelCommand="DataGrid1_CancelCommand" OnUpdateCommand="DataGrid1_UpdateCommand"
    >
      

  3.   

    参考DataGrid Event:
    1. *.aspx页面中代码
      <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="編輯">
    <HeaderStyle ></HeaderStyle>
    </asp:EditCommandColumn>
    <asp:ButtonColumn Text="刪除" CommandName="delete">
    <HeaderStyle ></HeaderStyle>
    </asp:ButtonColumn>2. *.cs中的代码
       private void grdSellGoods_UpdateCommand(object source, DataGridCommandEventArgs e)
    {    
    }private void grdSellGoods_CancelCommand(object source, DataGridCommandEventArgs e)
    {
    this.grdSellGoods.EditItemIndex = -1;
    this.FromViewStateBind();
    }private void grdSellGoods_EditCommand(object source, DataGridCommandEventArgs e)
    {
    this.grdSellGoods.EditItemIndex = e.Item.ItemIndex;
    this.FromViewStateBind();
    }private void grdSellGoods_DeleteCommand(object source, DataGridCommandEventArgs e)
    {
       int index = e.ItemIndex;  //取得行数
    ... //删除事件代码
    }