【问题标题】:Set gridview button text from c#从 C# 设置 gridview 按钮文本
【发布时间】:2013-11-20 10:23:05
【问题描述】:

我正在尝试从后面的代码绑定一个网格视图。其中一列包含一个按钮。该按钮的文本应根据行中加载的内容而变化。例如,根据内容,按钮应显示为 publishunpublish 。这是我所做的。

gridview的aspx代码:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand">

                          <Columns>
                                <asp:BoundField HeaderText="Name" DataField="Name">
                                    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
                                </asp:BoundField>
                                <asp:BoundField HeaderText="Sub Category" DataField="Sub Category"></asp:BoundField>
                                <asp:ImageField HeaderText="Image" DataImageUrlField="Image" ControlStyle-Height="39px"
                                    ControlStyle-Width="150px">
                                </asp:ImageField>
                                <asp:BoundField HeaderText="Start Date" DataField="Start Date"></asp:BoundField>
                                <asp:BoundField HeaderText="Expiry Date" DataField="Expiry Date"></asp:BoundField>
                                <asp:ButtonField HeaderText="Status" DataTextField="Status" ButtonType="Button" CommandName="publishButton_Click" />
                            </Columns>
                                                    </asp:GridView>

这是我的代码:

protected void Page_Load(object sender, EventArgs e){
 GridView1.DataSource = fillOfferGridView(nodeid);
            GridView1.DataBind();
}
DataTable fillOfferGridView(int nodeId)
        {
            Document next = new Document(nodeId);
            Button bf = new Button();
            DataTable dtOfferDetails = new DataTable();
            dtOfferDetails.Columns.Add("Name", typeof(string));
            dtOfferDetails.Columns.Add("Sub Category", typeof(string));
            dtOfferDetails.Columns.Add("Image", typeof(string));
            dtOfferDetails.Columns.Add("Start Date", typeof(string));
            dtOfferDetails.Columns.Add("Expiry Date", typeof(string));
            dtOfferDetails.Columns.Add("Status", typeof(Button));

            foreach (Document offer in next.Children)
            {
                DataRow dr = dtOfferDetails.NewRow();
                //string myOfferName = offer.GetProperty("offerName").Value;
                //string offerNodeName = offer.Name;
                //string offerurl = offer.NiceUrl;
                //string offerType = offer.GetProperty("offerType").Value;
                //string offerImage = offer.GetProperty("offerImage").Value;
                dr["Name"] = offer.getProperty("offerName").Value;
                dr["Sub Category"] = offer.getProperty("offerType").Value;
                dr["Image"] =  ResolveUrl(offer.getProperty("offerImage").ToString());
                dr["Start Date"] = offer.getProperty("offerLaunchDate").Value;
                dr["Expiry Date"] = offer.getProperty("offerExpiryDate").Value;
                if (offer.Published == true)
                {
                    bf.Text = "Unpublish";
                }
                else
                {
                    bf.Text = "Publish";
                }
                dr["Status"] = bf;
                dtOfferDetails.Rows.Add(dr);
            }
            return dtOfferDetails;
        }

但是当我运行代码而不是所需的文本时,我在按钮上得到 system.web.ui.webcontrols.button。我做错了什么?

【问题讨论】:

    标签: c# asp.net button gridview datatable


    【解决方案1】:

    修改这一行

       dr["Status"] = bf;
    

        dr["Status"] = bf.Text;
    

    【讨论】:

      【解决方案2】:
      dr["Status"] = bf.Text;
      

      如果您将按钮放在状态字段中,DataGrid 只需调用其 ToString() 方法,结果您将获得 system.web.ui.webcontrols.button 文本而不是按钮标题。

      更多。您不需要在代码中创建新按钮。随便写:

      if (offer.Published == true)
                      {
                          dr["Status"] = "Unpublish";
                      }
                      else
                      {
                          dr["Status"] = "Publish";
                      }
      

      【讨论】:

      • 同时更改 dtOfferDetails.Columns.Add("Status", typeof(Button));到 dtOfferDetails.Columns.Add("Status", typeof(string)).
      【解决方案3】:

      这行必须是:

      dr["Status"] = bf.Text;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-07
        相关资源
        最近更新 更多