【问题标题】:how to add link button using datatable as datasource to gridview dynamically?如何将使用数据表作为数据源的链接按钮动态添加到gridview?
【发布时间】:2012-01-17 07:05:39
【问题描述】:

在这里,我从代码隐藏中完成了所有事情。我动态创建了一个网格视图。

数据表 dt=null;
dt = loadDynamicGrid(列名, ds);

GridView grdnew = new GridView();

grdnew.DataSource = dt;

grdnew.DataBind();

private DataTable loadDynamicGrid(string [] column,DataSet ds)
{       
    #region Code for preparing the DataTable

    DataTable dt = new DataTable();

    //Create an ID column for adding to the Datatable
    DataColumn dcol ;//= new DataColumn(ID1, typeof(System.Int32));
    ButtonColumn btncolm;
    HyperLinkColumn hplink;

    for (int i = 0; i < column.Count(); i++)
    {
        if (column[i] != "" & column[i]!=null)
        {
            if (column[i] == "BUY" || column[i] == "Buy" || column[i] == "BuyNow" || column[i] == "Details" || column[i] == "ViewDetails" || column[i] == "BuyQty" || column[i] == "Purchase")
            {
                //btncolm = new ButtonColumn();
                //btncolm.HeaderText = column[i];
                //btncolm.Text = column[i];

                //dt.Columns.Add(btncolm.Text);
                hplink = new HyperLinkColumn();

                hplink.HeaderImageUrl = "http://www.google.com";
                hplink.HeaderText = column[i];
                hplink.Text = column[i];
                dt.Columns.Add(hplink.Text);

            }
            else
            {
                dcol = new DataColumn(column[i], typeof(System.String));
                dt.Columns.Add(dcol);
            }
        }
    }

    int k=0;

    foreach (DataRow dr in ds.Tables[0].Rows)
    {
        DataRow myrow = dt.NewRow();
        for (int j = 0; j < column.Count(); j++)
        {
            if (column[j] != "" & column[j] != null)
            {

                string sdfsd = Convert.ToString(dr[column[j]]);
                if (column[j] == "BUY" || column[j] == "Buy" || column[j] == "BuyNow" || column[j] == "Details" || column[j] == "ViewDetails" || column[j] == "BuyQty" || column[j] == "Purchase")
                {
                   //myrow[column[j]] = "http://www.google.com1/";
                   myrow[column[j]] = dr[column[j]];
                }                    
                else
                {
                    if (Convert.ToString(dr[column[j]]).TrimEnd() == "&nbsp;")
                    {
                        myrow[column[j]] = "";
                    }
                    else
                    {
                        myrow[column[j]] = dr[column[j]];
                    }
                }
                if (column[j] == "Stock" || column[j] == "QtyInStock" || column[j] == "Qty" || column[j] == "Available" || column[j].ToLower() == "onhand" || column[j] == "QuantityOnHand" || column[j] == "QtyAvailable" || column[j] == "InStock" || column[j] == "Avail" || column[j] == "Inventory" || column[j] == "Quantity" || column[j] == "Availability")
                {
                    if (Convert.ToString(dr[column[j]]) != "0" && Convert.ToString(dr[column[j]]) != "" && dr[column[j]] != null && Convert.ToString(dr[column[j]]).TrimEnd()!="&nbsp;")
                    {
                        stock = dr[column[j]].ToString();
                    }
                }

            }
        }
        k++;
        dt.Rows.Add(myrow);          

    }       

    #endregion

    column = null;

    return dt;      
}

然后我每次都添加到一个 div 中:

mydiv.Controls.Add(grdnew);

如上所述,我重复循环不同的数据表以绑定到 gridview。这里我需要一个到 gridview 的链接按钮。所以我向数据表添加了一个超链接列,但我没有在网格中获得任何链接按钮。我有超过 20 个数据表要绑定到网格。所以我更喜欢动态创建网格。

【问题讨论】:

    标签: asp.net gridview datatable linkbutton


    【解决方案1】:

    只需将网格替换为 datagrid 并将超链接列添加到数据表并单击我时将数据提供给该列

    DataTable dt=new DataTable();
    
    HyperLinkColumn hplink = new HyperLinkColumn();
    hplink.Text = column1[i];
    dt.Columns.Add(hplink.Text);
    
    DataRow myrow = dt.NewRow();
    myrow[column1[l]] = String.Format("<a href='" + imageUrl(gettablename(tablename)) + "' target='_blank'>" + dr[column[j]] + "</a>");
    
     dt.Rows.Add(myrow);
     DataGrid1.DataSource=dt;
     DataGrid1.DataBind();
    

    问题就解决了。

    【讨论】:

      【解决方案2】:
          TableCell tc1 = new TableCell();
      tc1.Wrap=true;
      this.lnkRecvGpNo=new LinkButton();
      lnkRecvGpNo.Text="RecvGp No";
      this.lnkRecvGpNo.Click+=new EventHandler(lnkRecvGpNo_Click);
      tc1.Controls.Add(lnkRecvGpNo);
      

      【讨论】:

      • ,我需要从网格更改为表格吗?
      • 为什么?如果您想在表格中生成链接按钮,并且如果您希望在网格视图中动态添加链接,请创建一个模板字段并在其中生成链接按钮。
      • 如果您正在为网格创建新的模板字段,则将该代码放入 gridview 的数据绑定中,如果使用上述方法,则在向表中添加列的位置
      • 正如我上面的代码所示,我没有为网格创建任何模板字段我直接将数据表分配给网格数据源,那么如何添加链接按钮?
      • 我创建了一个指向数据表的超链接列,同时我找到名称为“但”或“查看详细信息”的列标题并添加超链接卷而不是数据列,但此超链接列未添加为链接按钮或链接列到gridview,那么如何在gridview中实现链接列,同时添加datatable作为数据源?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 2012-07-06
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多