Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / May 2008

Tip: Looking for answers? Try searching our database.

Gridview and FileUpload ItemTemplate

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Paul - 29 May 2008 16:00 GMT
I have a gridview with 2 columns.

One column is a BoundColumn to a part number (string).
One column is an ItemTemplate with a FileUpload control.

There can be multiple rows (i.e. part numbers) in the gridview.

The user attaches a file for each part number / row.

The user clicks a button after attaching all the needed files.

I am having a problem accessing the FileUpload properties after the button's
OnClick event.

I have looked at the FindControl method, but I am having a hard time
determining the correct control name.

To make things more complicated, I am also using master pages, which modify
the control's name based on the number of rows in the gridview.

Can anyone point me to an example of this scenario?

TIA

Here is the gridview code:

   <asp:GridView ID="gv_vendor_quotes" runat="server"
AutoGenerateColumns="False" CssClass="gv">
       <HeaderStyle CssClass="gv_header" />
       <AlternatingRowStyle CssClass="gv_alt_row" />
       <Columns>
           <asp:BoundField DataField="line_part_num" HeaderText="SO Part">
               <ItemStyle HorizontalAlign="Left" />
               <HeaderStyle HorizontalAlign="Left" />
           </asp:BoundField>      
           <asp:TemplateField HeaderText="Vendor Quote Document">
               <ItemStyle HorizontalAlign="Center" />
               <HeaderStyle HorizontalAlign="Center" />
               <ItemTemplate>
                   <asp:FileUpload ID="fu_vendor_quote" runat="server"
/><asp:HyperLink ID="lnk_vendor_quote" runat="server" Target="_blank" />
               </ItemTemplate>
           </asp:TemplateField>        
       </Columns>
   </asp:GridView>
Teemu Keiski - 29 May 2008 16:25 GMT
Hi,

my post should help you understand the control hierarchy

Understanding the naming container hierarchy of ASP.NET databound controls
http://aspadvice.com/blogs/joteke/archive/2007/02/25/Understanding-the-naming-co
ntainer-hierarchy-of-ASP.NET-databound-controls.aspx


Essential is to realize that GridView and its rows are naming containers
which provide a new naming scope for controls hey contain (allowing the
controls to have duplicate IDs as long as IDs are unique in the local naming
scope). But the rendered ID matches controls ClientID property and name
attribute to UniqueID property , but the ID is still ID in the local scope.

E.g you can for example loop through GridView's Rows, locate the FileUpload
on every row, and do what you need to do with it

For Each gvRow As GridViewRow in gv_vendor_quotes.Rows

   Dim fu_vendor_quote As FileUpload =
CType(gvRow.FindControl("fu_vendor_quote"), FileUpload)
   'Here do what you need to do, you can also get row-level data from
gvRow, access DataKeys etc

Next

Signature

Teemu Keiski
AspInsider, ASP.NET MVP
http://blogs.aspadvice.com/joteke
http://teemukeiski.net

>I have a gridview with 2 columns.
>
[quoted text clipped - 43 lines]
>        </Columns>
>    </asp:GridView>
PhilTheGap - 29 May 2008 16:36 GMT
>I have a gridview with 2 columns.
>
[quoted text clipped - 13 lines]
> I have looked at the FindControl method, but I am having a hard time
> determining the correct control name.
The FindControl method must be called with the Parent control... So if you
write Page.FindControl("FileUpload1") , it returns something if the
FileUpload  is inside the Page. But as you use a MasterPage, it is not the
case.

You should load your html aspx page, then take a look at the source page.
You will then find something like "<div
id="TabContainer1_TabPanel1_UpdatePanel1">, which tells you that the
UpdatePanel1 control is inside the TabPanel1 control, which is inside the
TabContainer1 control, which is inside the Page. To get a handle on
TabPanel1, you should write:

TabContainer tabc = Page.FindControl ("TabContainer1") as TabContainer;
TabPanel tabp = tabc .FindControl ("TabContainer1") as TabPanel;

Hope it helps

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.