[ad_1]
こんにちは、みんな..
これにグリッドビューがあり、ファイルアップロードコントロールとアップロードというボタンを配置しました
アップロードボタンをクリックすると、アップロードコントロールでファイルパスを取得する必要があり、目的の場所に保存する必要があります
ここで私はこの方法で試しました
XML
<asp:GridView ID="GridView1" CellPadding="4" runat="server" OnRowCommand="GridView1_RowCommand" AutoGenerateColumns="false" AllowPaging="true" AllowSorting="true" PageSize="5" Width="95%" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowDeleting="GridView1_RowDeleting"> <AlternatingRowStyle BackColor="aliceBlue" /> <HeaderStyle HorizontalAlign="Left" /> <Columns> <asp:TemplateField Visible="false"> <ItemTemplate> <asp:Label ID="eid" runat="server" Text='<%# Eval("uid") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="ccode" HeaderText="Company Code" /> <asp:BoundField DataField="cname" HeaderText="Company Name" /> <asp:TemplateField HeaderText="Company Logo"> <ItemTemplate> <asp:Image ID="LogoImage" ImageUrl="~/images/logo-not-available.jpg" runat="server" Height="80px" Width="150px" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField Visible="false"> <ItemTemplate> <asp:Label ID="logopathlbl" runat="server" Text='<%# Eval("logopath") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Logo Upload"> <ItemTemplate> <asp:FileUpload ID="FileUpload4" runat="server" /> <asp:Button ID="bt_upload" runat="server" EnableViewState="False" Text="Upload" CommandName="Upload" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
次のような行コマンドで背後のコードから呼び出しているとき
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { Button bts = e.CommandSource as Button; Response.Write(bts.Parent.Parent.GetType().ToString()); if (e.CommandName.ToLower() == "upload") { FileUpload fu = bts.Parent.Parent.FindControl("FileUpload4") as FileUpload;//here it is detecting file upload4 if (fu.HasFile)//here it is showing no file in file upload control { Response.Write(fu.PostedFile.FileName); } } }
あるいは他の方法を教えてください。
これは私の大きな問題です、誰か助けてくれませんか
前もって感謝します
解決策 3
やあ
うまくいくはずです…
やってみる…
私が作成して実行したコード全体を確認してください。
クライアントコード内:
<body> <form id="form1" runat="server"> <div> <table width="100%"> <tr> <td> <asp:GridView ID="GridView1" CellPadding="4" runat="server" OnRowCommand="GridView1_RowCommand" AutoGenerateColumns="false" AllowPaging="true" AllowSorting="true" PageSize="5" Width="95%" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowDeleting="GridView1_RowDeleting" EmptyDataText="No record in Company Table"> <AlternatingRowStyle BackColor="aliceBlue" /> <HeaderStyle HorizontalAlign="Left" /> <Columns> <asp:TemplateField Visible="false"> <ItemTemplate> <asp:Label ID="eid" runat="server" Text='<%# Eval("uid") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="ccode" HeaderText="Company Code" /> <asp:BoundField DataField="cname" HeaderText="Company Name" /> <asp:TemplateField HeaderText="Company Logo"> <ItemTemplate> <asp:Image ID="LogoImage" ImageUrl="~/Images/mcts.JPG" runat="server" Height="80px" Width="150px" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField Visible="false"> <ItemTemplate> <asp:Label ID="logopathlbl" runat="server" Text='<%# Eval("logopath") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Logo Upload"> <ItemTemplate> <asp:FileUpload ID="FileUpload4" runat="server" /> <asp:Button ID="bt_upload" runat="server" EnableViewState="False" Text="Upload" CommandName="Upload" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </td> </tr> </table> </div> </form> </body>
私のコードビハインド:
public class Company { private string uid; private string ccode; private string cname; private string logopath; public string Uid { get { return uid; } set { uid = value; } } public string Ccode { get { return ccode; } set { ccode = value; } } public string Cname { get { return cname; } set { cname = value; } } public string Logopath{get { return logopath; }set { logopath = value; }} public Company() { } } public partial class Default2 : System.Web.UI.Page { string myConn = ConfigurationManager.ConnectionStrings["TestConn"].ConnectionString; SqlConnection conn; SqlCommand cmd; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { List<Company> coLst = new List<Company>(); using (conn = new SqlConnection(myConn)) { conn.Open(); StringBuilder sbQry = new StringBuilder(); sbQry.Append("SELECT * from Company "); using (cmd = new SqlCommand(sbQry.ToString(), conn)) { cmd.CommandType = CommandType.Text; using (SqlDataReader odr = cmd.ExecuteReader()) { while (odr.Read()) { Company company = new Company(); { company.Ccode = odr["uid"].ToString(); company.Ccode = odr["ccode"].ToString(); company.Cname = odr["cname"].ToString(); company.Logopath = odr["logopath"].ToString(); } coLst.Add(company); } } } } GridView1.DataSource = coLst; GridView1.DataBind(); } } protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { Button bts = e.CommandSource as Button; Response.Write(bts.Parent.Parent.GetType().ToString()); if (e.CommandName.ToLower() != "upload") { return; } FileUpload fu = bts.FindControl("FileUpload4") as FileUpload;//here if (fu.HasFile) { bool upload = true; string fleUpload = Path.GetExtension(fu.FileName.ToString()); if (fleUpload.Trim().ToLower() == ".xls" | fleUpload.Trim().ToLower() == ".xlsx") { fu.SaveAs(Server.MapPath("~/UpLoadPath/" + fu.FileName.ToString())); string uploadedFile = (Server.MapPath("~/UpLoadPath/" + fu.FileName.ToString())); //Someting to do?... } else { upload = false; // Something to do?... } if (upload) { // somthing to do?... } } else { //Something to do?... } }
ニーズに合わせてこれを改訂しました。
返信が役立つ場合は回答としてマークし、役に立たない場合はマークを外すことを忘れないでください。
よろしく、
全般的
解決策 2
やあ、
役立つ場合はこれを試してください…
コードビハインドの例:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { Button bts = e.CommandSource as Button; Response.Write(bts.Parent.Parent.GetType().ToString()); if (e.CommandName.ToLower() != "upload") { return; } FileUpload fu = bts.FindControl("FileUpload4") as FileUpload;//here if (fu.HasFile) { bool upload = true; string fleUpload = Path.GetExtension(fu.FileName.ToString()); if (fleUpload.Trim().ToLower() == ".xlsx") { fu.SaveAs(Server.MapPath("~/UpLoadPath/" + fu.FileName.ToString())); string uploadedFile = (Server.MapPath("~/UpLoadPath/" + fu.FileName.ToString())); //Someting to do?... } else { upload = false; // Something to do?... } if (upload) { // somthing to do?... } } else { //Something to do?... } }
サブディレクトリが必要です アップロードパス あなたの中ではなくあなたのアプリドメイン内で
プロジェクト 解決策でそのようなファイルをコピーし、アプリで表示できるようにします。 そうしないと、これは可能性があります
ローカルで実行しますが、公開時にファイルが見つからないエラーが発生する可能性があります…
これがお役に立てば幸いです…
返信が役立つ場合は回答としてマークし、役に立たない場合はマークを外すことを忘れないでください。
よろしく、
全般的
解決策 1
[ad_2]
コメント