1

グリッド ビューで、画像アイコン付きのファイルをアップロードしました。グリッドビューに画像アイコンを表示し、行にアップロードされたファイルのタイプを取得するために (コマンド引数)、画像ボタンを使用しました。画像アイコンが表示されますが、画像ボタンをクリックするとエラーが発生します" System.ArgumentException:無効なポストバックまたはコールバック引数" 画像ボタンの代わりに画像コントロールを使用できればもっと良かったのですが、行から拡張ファイルの種類を取得する方法がわかりません。また、この場合、リンク イメージ ボタンを無効にできれば問題ありませんでした。

tblfile のデータベースの設計は次のようになります。

Fileid(int)
Docid(int)
TransId(int)
Content type varchar(75)
Data varbinary(max)
Extention varchar(50)

シーズ:

protected void GridViewEfile_DataBound(object sender, EventArgs e)
 {
    foreach (GridViewRow gvr in GridViewEfile.Rows)                   //loop each row
    {
        ImageButton ib = (ImageButton)gvr.FindControl("ib1");    //find imagebutton

        string exten = ib.CommandArgument;;      //get index of '.'
        if (exten == ".pdf")
            ib.ImageUrl = @"~/Images/iconpdf.gif";                      //set image for imagebutton in each row

        else if (exten == ".docx")

            ib.ImageUrl = @"~/Images/icondoc.gif";

    }
}

protected void ib1_Command(object sender, CommandEventArgs e)
{

       _DataContext = new EDMSDataContext();
       //you can get your command argument values as follows
       string FileId = e.CommandName.ToString();
       int _FileId = Convert.ToInt32(FileId);
       tblFile Efile = (from ef in _DataContext.tblFiles
                        where ef.FileId == _FileId
                        select ef).Single();
       if (Efile != null)
       {

           download(Efile);

       }
   }

.aspx:

<asp:GridView ID="GridViewEfile" runat="server" AutoGenerateColumns="False" CellPadding="4"
    OnDataBound="GridViewEfile_DataBound" ForeColor="Black" DataKeyNames="FileID"
    GridLines="None" ShowHeader="False">
    <AlternatingRowStyle BackColor="Yellow" />
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:ImageButton runat="server" ID="ib1" OnCommand="ib1_Command" CommandName='<%#Eval("FileID")%>'
                    CommandArgument='<%# Eval("Exten") %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton1" runat="server" OnCommand="LinkButton1_Command" CommandName="Download"
                CommandArgument='<%#Eval("FileID")%>'><%#Eval("FileName")%></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="ContentType" />
    </Columns>
    <EditRowStyle BackColor="#7C6F57" />
    <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="Red" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
   <RowStyle BackColor="#E3EAEB" />
   <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
</asp:GridView>
4

0 に答える 0