/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Hjælp!! Find Control i Gridview i Code Beh~
Fra : Johnny K


Dato : 30-07-08 11:15

Hey guys..

Jeg har virkelig fået grå hår (og jeg er kun 27), over at jeg
ikke kan finde en UploadFile control i min Gridview
EditItemTemplate i cs'en :(

Jeg har prævet ALT muligt, søgt på nettet og fundet noget jeg
troede ville virke, men intet fungere for mig.

Her er hvad jeg har skrevet og som jeg føler bare mangler et
eller andet simpelt, så det er det jeg håber nogen herinde kan
hjælpe med, for jeg er virkelig ved at gå ud af mit gode skind
over det her...

ASP.NET------------------------------------------------------

<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False" CellSpacing="5"
CssClass="text" DataKeyNames="ID"
DataSourceID="LinqNyhederEdit" GridLines="None">
<Columns>
<asp:CommandField ShowDeleteButton="True"
ShowEditButton="True"
DeleteText="Slet"
EditText="Redigere&amp;nbsp;&amp;nbsp;" >
<ItemStyle VerticalAlign="Middle" Width="100px"
/>
</asp:CommandField>
<asp:BoundField DataField="Date"
DataFormatString="{0:d}" HeaderText="Date"
SortExpression="Date" >
<ControlStyle Width="100px" />
<ItemStyle VerticalAlign="Top" Width="80px" />
</asp:BoundField>
<asp:BoundField DataField="Topic" HeaderText="Topic"
SortExpression="Topic" >
<ItemStyle VerticalAlign="Top" Width="170px" />
</asp:BoundField>
<asp:TemplateField HeaderText="Description"
SortExpression="Description">
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server"
Text='<%# Bind("Description") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server"
Text='<%# Bind("Description") %>'></asp:Label>
</ItemTemplate>
<ItemStyle VerticalAlign="Top" Width="400px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="PicUrl"
SortExpression="PicUrl">
<EditItemTemplate>
<asp:TextBox ID="tbUploadUpdate"
runat="server" Text='<%# Bind("PicUrl") %>'></asp:TextBox>
<asp:FileUpload ID="FileUpload2"
runat="server" ></asp:FileUpload>&nbsp;&nbsp;
<asp:Button
ID="btnUploadUpdate" runat="server"
onclick="btnUploadUpdate_Click" />
</EditItemTemplate>
<ItemTemplate>
<asp:Image ID="img" runat="server"
ImageUrl='<%# Bind("PicUrl", "~/Images/Pictures/Nyheder/{0}") %>'
Height="176px" Width="110px"></asp:Image>
</ItemTemplate>
<ItemStyle VerticalAlign="Top" />
</asp:TemplateField>

</Columns>
</asp:GridView>

C#----------------------------------------------------------

protected void btnUploadUpdate_Click(object sender, EventArgs
e)
{
foreach (GridViewRow row in GridView1.Rows)
{

FileUpload FileUpload2 =
this.FindControl("GridView1$FileUpload2") as FileUpload;

FileUpload fileupload2 =
(FileUpload)this.GridView1.FindControl("FileUpload2");
TextBox tbuploadupdate =
(TextBox)FindControl("tbUploadUpdate");

string ImageFolder = "Images/Pictures/Nyheder";
string savePath;
string saveFile;


if (FileUpload2.HasFile)
{
try
{
savePath =
Path.Combine(Request.PhysicalApplicationPath, ImageFolder);
saveFile = Path.Combine(savePath,
fileupload2.FileName);
FileUpload2.SaveAs(saveFile);
}

catch (Exception exUpload)
{
Status.Text = exUpload.Message;
}

tbuploadupdate.Text = fileupload2.FileName;
}
else
{
Status.Text = "ØV!";
}
}
}

stop---------------------------------------------------------

Som i kan se har jeg prøvet lidt forskelligt med findcontrol, men
ja, intet virker, den skriver "NullReferanceExeption was
unhandled by user", så ja den kan jo åbenbart ikke finde
FileUpload2...

HJÆLP! PLEASE!

PS. Har læst at man ikke skal fylde indlæget med en masse kode,
men har ikke rigtig noget andet valg.

På Forhånd tak.

Johnny

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Johnny K (30-07-2008)
Kommentar
Fra : Johnny K


Dato : 30-07-08 13:05

FANDT SGU UD AF DET :) !!!

FileUpload FileUpload2 =
(FileUpload)this.FindControl("ctl00$Frame$GridView1$ctl02$FileUpload
2");

Sådan skal det se ud :)


ctl00$Frame$GridView1$ctl02$FileUpload2 = den rigtige sti.

Det var ved et tilfælde jeg opdagede det, da jeg kørte noget html
igennem en TextBox og requestValidation var = true, så lavede den
selvfølgelig en fejl, og der stod stien på Textbox'en i fejlen :)
og Texboxen bruger samme sti som FileUpload2, altså =
ctl00$Frame$GridView1$ctl02$.

Perfekt..

Typisk at man kort tid efter man har skrevet et indlæg, finder ud af
det selv..

Håber bare det måske kan komme andre til nytte så :)

God Sommer


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Johnny K (30-07-2008)
Kommentar
Fra : Johnny K


Dato : 30-07-08 18:00

Nå ja.. hmm.. det virker kun på det Row der hedder $ct102 :-/



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Michael Weber (01-08-2008)
Kommentar
Fra : Michael Weber


Dato : 01-08-08 16:28

Johnny K wrote:
> Hey guys..
>
> Jeg har virkelig fået grå hår (og jeg er kun 27), over at jeg
> ikke kan finde en UploadFile control i min Gridview
> EditItemTemplate i cs'en :(

Ehh....nu Johnny K. a.k.a. Sølvræven ?
:P


[snip]

> protected void btnUploadUpdate_Click(object sender, EventArgs
> e)
> {
> foreach (GridViewRow row in GridView1.Rows)
> {
>
> FileUpload FileUpload2 =
> this.FindControl("GridView1$FileUpload2") as FileUpload;
>
> FileUpload fileupload2 =
> (FileUpload)this.GridView1.FindControl("FileUpload2");
> TextBox tbuploadupdate =
> (TextBox)FindControl("tbUploadUpdate");
>
> string ImageFolder = "Images/Pictures/Nyheder";
> string savePath;
> string saveFile;
>
>
> if (FileUpload2.HasFile)
> {
> try
> {
> savePath =
> Path.Combine(Request.PhysicalApplicationPath, ImageFolder);
> saveFile = Path.Combine(savePath,
> fileupload2.FileName);
> FileUpload2.SaveAs(saveFile);
> }
>
> catch (Exception exUpload)
> {
> Status.Text = exUpload.Message;
> }
>
> tbuploadupdate.Text = fileupload2.FileName;
> }
> else
> {
> Status.Text = "ØV!";
> }
> }
> }
>
> stop---------------------------------------------------------


Du gennemløber Gridviews row-collection, men
bruger ikke objektet row ?
....
foreach (GridViewRow row in GridView1.Rows)
....// objektet row bruges ikke til noget.

Måske du, i rows´ Control-collection
(row.Controls returnerer en ControlCollection ) skulle lede efter
et objekt af typen FileUpload ?

Spørgsmålet hører vist iøvrigt til lidt længere henne af gangen,
4. dør på højre hånd, dk.edb.programmering.dotnet.
(Der er vist altid kaffe på kanden og en røverhistorie i luften)

;)


--
Med venlig hilsen
Michael Weber
Mod humor kæmper selv Guderne forgæves.



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste