0

小さなレポート サービスを備えた単純なシステムを開発しています。通常、レポート サービスは DropDownList であり、DropDownList の値に基づいて Gridview が生成されます。この GridView の下には、GridView を Word ドキュメントとして印刷するための ImageButton があります。私の問題は、そのボタンが常に表示されることです。GridView に関連しているため、GridView と共に表示されるはずです。では、どうやってそれを行うのですか?

ASP.NET コード:

<div>

        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"
            DataSourceID="SqlDataSource2" DataTextField="Title" DataValueField="ID" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
        </asp:DropDownList>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
            ConnectionString="<%$ ConnectionStrings:PM_RegistrationSysDBConnectionString %>" 
            SelectCommand="SELECT [ID], [Title] FROM [Events]"></asp:SqlDataSource>

    </div>

    <br />

    <div>    
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" ShowFooter="true">
            <Columns>
                <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
                <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />

                <%--<asp:TemplateField>
                    <FooterTemplate>
                        <asp:ImageButton ID="wordBtn" CssClass="icon" runat="server" ImageUrl="images/word.png" 
                           ToolTip="Generate a Word Document" OnClick="creat_word_table"></asp:ImageButton>
                    </FooterTemplate>
                </asp:TemplateField>--%>
            </Columns>
        </asp:GridView>
        <br />
        <asp:ImageButton ID="wordBtn" CssClass="icon" runat="server" ImageUrl="images/word.png" 
                           ToolTip="Generate a Word Document" OnClick="creat_word_table"></asp:ImageButton>
    </div>

C# コード:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string connString = ConfigurationManager.ConnectionStrings["PM_RegistrationSysDBConnectionString"].ConnectionString;
        SqlConnection conn = new SqlConnection(connString);
        string eventTitle = DropDownList1.SelectedItem.Text;
        string cmd = @"SELECT     dbo.Events.Title, dbo.Users.Name
                        FROM         dbo.BookingDetails INNER JOIN
                                              dbo.Events ON dbo.BookingDetails.EventID = dbo.Events.ID INNER JOIN
                                              dbo.Users ON dbo.BookingDetails.NetworkID = dbo.Users.NetworkID
                        WHERE     (dbo.Events.IsActive = 1) AND (dbo.Events.Title = '"+eventTitle+"')";
        SqlDataAdapter da = new SqlDataAdapter(cmd, conn);
        DataTable dt = new DataTable();
        da.Fill(dt);
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }


    public void creat_word_table(object sender, EventArgs e)
    {
        Response.AddHeader("content-disposition", "attachment;filename=Export.doc");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "application/vnd.word";

        StringWriter stringWrite = new StringWriter();
        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

        HtmlForm frm = new HtmlForm();
        GridView1.Parent.Controls.Add(frm);
        frm.Attributes["runat"] = "server";
        frm.Controls.Add(GridView1);
        frm.RenderControl(htmlWrite);

        Response.Write(stringWrite.ToString());
        Response.End();
    }
4

1 に答える 1

1

これを試して

デフォルトでは、画像ボタンをvisible = false;

myImageButton.Visible = false;

次に、グリッドのデータソースを設定する前に、レコードがあるかどうかを確認します

何かのようなものdt.Rows.Count

例えば

if(dt.Rows.Count > 0)
   myImageButon.Visible = true;
于 2012-08-14T09:37:50.583 に答える