【问题标题】:How to add action buttons like edit and delete to dynamic gridview如何将编辑和删除等操作按钮添加到动态gridview
【发布时间】:2015-07-12 07:52:21
【问题描述】:

我添加了一个动态生成的 GridView。我正在从数据库中获取行并将其加载到 DataTable 中。我想将编辑和删除按钮添加到此 DataTable 并将其绑定到 GridView,以便我可以编辑和删除 GridView 的内容。 GridView 生成不止一次,并在循环中调用,因为它需要生成数周的时间表。下面是绑定数据和生成GridView的源码:

protected void BindData(string str)
{
    string[] startdate = getdate(str);
    int firstdate = Convert.ToInt32(startdate[1]);
    int lastdate = firstdate + 7;
    string enddate = startdate[0]+"/"+Convert.ToString(lastdate)+"/"+startdate[2];
    if (conn.State == ConnectionState.Closed)
        conn.Open();

    SqlCommand cmd = new SqlCommand("SELECT DISTINCT CONVERT (varchar(25), Cale_WeekDate,106) AS 'Date',Cale_DayName AS 'Day',Cale_Task8 AS '08:00 AM',Cale_Task9 AS '09:00 AM',Cale_Task10 AS '10:00 AM',Cale_Task11 AS '11:00 AM',Cale_Task12 AS '12:00 PM',Cale_Task13 AS '1:00 PM' FROM Calendar WHERE Cale_WeekDate BETWEEN '"+str+"' AND '"+enddate+"'", conn);
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(ds);               
    GridView gvTimeSheet = new GridView();
    //gvTimeSheet.ID = "gvTimeSheet" + gridcount;
    gvTimeSheet.AutoGenerateColumns = false;

    dt = ds.Tables[0];
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        BoundField boundfield = new BoundField();
        boundfield.DataField = dt.Columns[i].ColumnName.ToString();
        boundfield.HeaderText = dt.Columns[i].ColumnName.ToString();
        gvTimeSheet.Columns.Add(boundfield);
    }
    gvTimeSheet.DataSource = dt;
    gvTimeSheet.DataBind();
    gvTimeSheet.Width = 600;
    gvTimeSheet.HeaderStyle.CssClass = "header";
    gvTimeSheet.RowStyle.CssClass = "rowstyle";

    Panel1.Controls.Add(gvTimeSheet);
    HtmlGenericControl linebreak = new HtmlGenericControl("br");            
    Panel1.Controls.Add(linebreak);       
}

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    在 asp.net 中我们可以这样做:

        <asp:GridView>
            <Columns>
                <asp:TemplateField HeaderText="Test">
                    <ItemTemplate>
                        <asp:Button ID="btnTest" CommandArgument='btnTest' runat="server" Text="Test et" OnClick="btnTest_Click" />
                        <asp:Button ID="btnVerify" CommandArgument='btnVerify' runat="server" Text="Verify" OnClick="btnVerify_Click" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    

    在代码方面:

    protected void btnTest_Click(object sender, EventArgs e)
    {
    }
    
    protected void btnVerify_Click(object sender, EventArgs e)
    {
    }
    

    您还可以在运行时将按钮添加为列。

    【讨论】:

    • 但我希望动态生成,因为 gridview 是动态生成的。因此我需要在运行时本身添加按钮。 gridview 可以多次生成,因此需要动态生成所有按钮。
    【解决方案2】:

    取最大列数,假设你有3个数据绑定列(i=3),在位置(i+1=4)添加模板列进行编辑,在位置(i+1=5)删除下一个模板列)。

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多