具体描述,
1、用DataGrid的删除列,如何获取本列的Id号
2、我想通过DataGrid中的超级链接列或者模板列实现window.open('abc.aspx?id=参数'),搞了好长时间没有搞定。以上2个问题希望得到高手指点,先谢了!100分相送。

解决方案 »

  1.   

    1、用DataGrid的删除列,如何获取本列的Id号
    +++++++++++++++++++++++++++++++++++++++
    private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {   
        string strID = DataGrid1.DataKeys[e.Item.ItemIndex].ToString();    
        int intID = Convert.ToInt32(DataGrid1.DataKeys[e.Item.ItemIndex]);
    }2、我想通过DataGrid中的超级链接列或者模板列实现window.open('abc.aspx?id=参数'),搞了好长时间没有搞定。
    +++++++++++++++++++++++++++++++++++++++
    <asp:templatecolumn itemstyle-width="100">
        <itemtemplate>
            <a href="javascript:window.open('menuxp.aspx')">Test</a>
        </itemtemplate>
    </asp:templatecolumn>
      

  2.   

    你的第一个问题我不太明白,是本列的id号还是本行的id号啊
      

  3.   

    2.....可加参数
    <asp:TemplateColumn HeaderText="ID">
    <ItemTemplate>
    <a href="#" onclick='<%# "Javascript:window.open(\"yourpage.aspx?id=" + DataBinder.Eval(Container, "DataItem.Id")+ "\");" %>'>
    <%# DataBinder.Eval(Container.DataItem,"Id")%>
    </a>
    </ItemTemplate>
      

  4.   

    HTML代码:<HTML>
    <HEAD>
    <title>WebForm4</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: 169px; POSITION: absolute; TOP: 215px"
    runat="server" Width="287px" Height="188px" AutoGenerateColumns="False">
    <Columns>
    <asp:BoundColumn DataField="a" HeaderText="aa"></asp:BoundColumn>
    <asp:BoundColumn DataField="b" HeaderText="bb"></asp:BoundColumn>
    <asp:TemplateColumn>
    <HeaderTemplate>
    <FONT face="宋体"></FONT>
    </HeaderTemplate>
    <ItemTemplate>
    <FONT face="宋体">
    <asp:Button id="Button1" runat="server" Text="删除" CommandName="del"></asp:Button></FONT>
    </ItemTemplate>
    <EditItemTemplate>
    <FONT face="宋体"></FONT>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn>
    <ItemTemplate>
    <FONT face="宋体">
    <asp:Button id="Button2" runat="server" Text="新页面" CommandName="new"></asp:Button></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
    </form>
    </body>
    </HTML>
    后台C#代码:page_load事件if (!Page.IsPostBack)
    {
    DataTable dt = new DataTable();
    dt.Columns.Add("a");
    dt.Columns.Add("b"); DataRow dr; dr=dt.NewRow(); dr["a"]="1";
    dr["b"]="1"; dt.Rows.Add(dr); dr=dt.NewRow(); dr["a"]="2";
    dr["b"]="2"; dt.Rows.Add(dr); this.DataGrid1.DataSource=dt;
    this.DataGrid1.DataBind();
    }DataGrid1_ItemCommand事件:if (e.CommandName == "del")
    {
    string sql = "delete from Table where a = '"+ e.Item.Cells[0].Text +"'";
    //执行你的删除过程
    } if (e.CommandName == "new")
    {
    string url = "webfrom1.aspx&ID=" + e.Item.Cells[0].Text; Page.RegisterStartupScript("test", "<script>window.open('"+ url +"')</script>"); }
      

  5.   

    myGrade.DataKeys[(int)e.Item.ItemIndex] 不就是DataGrid获取本列的Id号代码吗
    弹出页面是 <asp:HyperLinkColumn DataNavigateUrlField="EmployeeID" DataNavigateUrlFormatString="javascript:varwin=window.open('detail.aspx?id={0}',null,width=300,height=200');window.close();" DataTextField="LastName" HeaderText="LastName"></asp:HyperLinkColumn>
      

  6.   

    多谢各位!
    第一个问题大家的意见都查不错,为什么我用之后会出现下面的错误:索引超出范围。必须为非负值并小于集合大小。参数名: index 
    行 74:  string strID = DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
      

  7.   

    别忘了DataGrid中设置DataKeyField="id"
          <asp:DataGrid id="ItemsGrid" 
               DataKeyField="id"
               runat="server">
      

  8.   

    swordragon(古道热肠) 正解