Avatar billede bumle90 Nybegynder
04. maj 2005 - 16:43 Der er 8 kommentarer

Problemer med tilgang til knap i mit datagrid

Jeg har følgende datagrid på min side:

<asp:DataGrid Runat=server ID="DataGrid1" AutoGenerateColumns=False>
            <Columns>
           
                <asp:TemplateColumn HeaderText="Link">
                    <ItemTemplate>
                            <a href="http://www.dr.dk?<%#DataBinder.Eval(Container.DataItem,"CERT_NR")%>">
                                <%#DataBinder.Eval(Container.DataItem,"CERT_NR")%>
                            </a>
                    </ItemTemplate>
                </asp:TemplateColumn>
               
                <asp:TemplateColumn HeaderText="Link">
                    <EditItemTemplate>
                   
                        <htmli:HtmlInputFile runat=server ID="httpinputfile">
                        <asp:Button ID="btnUpl" Runat=server Text="Gem" CommandName="uplfunc" CommandArgument='<%#DataBinder.Eval(Container.DataItem,"CERT_NR")%>'></asp:Button>
                    </EditItemTemplate>
                </asp:TemplateColumn>
               
                <asp:BoundColumn DataField="CERT_NR" HeaderText="Cert nummer">
                </asp:BoundColumn>
                <asp:BoundColumn DataField="ROLLE_INDEHAVER" HeaderText="Rolle indehaver">
                </asp:BoundColumn>
                <asp:HyperLinkColumn DataNavigateUrlField="CERT_NR"
                    DataNavigateUrlFormatString="http://www.dr.dk?id={0}" DataTextField="CERT_NR" HeaderText="Link">
                </asp:HyperLinkColumn>
            </Columns>
        </asp:DataGrid>

///////////////////////////////////////////////////////////

Jeg har problemer med at tilgå kontrollerne : httpinputfile og btnUpl fra min codebehind. Jeg har blot deklareret dem normalt. ¨

Mangler jeg noget?
De er = null når jeg prøver at tilgå dem, så de bliver aldrig initialiseret, dog renderes de alligevel på min side til hhv. upload funktion og knap.

Der er altså noget galt med koblingen mellem aspx-filen og codebehind.

Mange hilsner
Avatar billede snepnet Nybegynder
04. maj 2005 - 17:24 #1
det er vel typisk pr. række du har brug for at tilgå dem, og f.eks. i en databound-eventhandler for griddet kan du lave en :

((Button) btn = (Button)e.Item.FindControl("btnUpl");

hvorefter du kan lave det du vil med knappen :

btn.Text = "Yuhah";

jeg har lidt en idé om at det ikke er helt det du er ude efter, men du må jo lige råbe op så.

mvh
Avatar billede bumle90 Nybegynder
04. maj 2005 - 17:31 #2
Mmm det er ikke i databound eventet jeg har brug for knappen, men i itemcommand.

Jeg har brug for at få fat i den uploadede fil.
Se i eventhandleren DataGrid1_ItemCommand
Altså her er min codebehind:


namespace vgtonline_uploads
{
    /// <summary>
    /// Summary description for WebForm1.
    /// </summary>
    ///

    public class WebForm1 : System.Web.UI.Page
    {
       
        protected System.Web.UI.WebControls.Button Button1;
        protected System.Web.UI.WebControls.TextBox txtInput;
        protected System.Web.UI.WebControls.DataGrid DataGrid1;
        protected System.Web.UI.WebControls.Button btnUpl;
       
        protected System.Web.UI.HtmlControls.HtmlInputFile httpinputfile;

        public readonly string connstr = "xxx";

        private void Page_Load(object sender, System.EventArgs e)
        {
            if(!IsPostBack)
                DataGrid1.Visible=false;
            txtInput.Text="4100606";
            //doDataBind();
           
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
            Button1.Click+=new EventHandler(Button1_Click);
            DataGrid1.ItemCommand+=new DataGridCommandEventHandler(DataGrid1_ItemCommand);
        }
        #endregion

        private void doDataBind()
        {
            string commandString = "SELECT CERT_NR, ROLLE_INDEHAVER FROM Vaegte WHERE CERT_NR='"+txtInput.Text+"'";
            SqlDataAdapter DataAdapter = new SqlDataAdapter( commandString, connstr);

            DataSet allWeights = new DataSet();
            DataAdapter.Fill( allWeights, "Vaegte");

            DataTable myDataTable = allWeights.Tables[0];
            DataGrid1.DataSource=myDataTable;
            DataGrid1.DataBind();
            DataGrid1.Visible=true;
        }

        private void Button1_Click(object sender, System.EventArgs e)
        {
            doDataBind();
        }
        private void Upload_Click(){
            Response.Write("FILE UPLOAD!");
        }


        private void DataGrid1_ItemCommand(object source, DataGridCommandEventArgs e)
        {
            switch(e.CommandName)
            {
                case "uplfunc":
                    httpinputfile.PostedFile.SaveAs(this.Server.MapPath("/uplFiles/"+e.CommandArgument));                    //HERNEDE FÅR JEG EN NULLPOINTEREXCEPTION DA httpinputfile IKKE HAR EN VÆRDI
                    break;
            }
        }
    }
}
Avatar billede bumle90 Nybegynder
04. maj 2005 - 17:46 #3
snepnet, har du en ide om hvad jeg gør galt?
Avatar billede snepnet Nybegynder
04. maj 2005 - 17:53 #4
du skal have fat i den inputfile-kontrol der ligger i rækken med eksempelvis FindControl (...).

så din case bliver noget i denne stil :

HtmlInputFile fileControl = (HtmlInputFile)e.Item.FindControl("httpinputfile");
så har du filen i
fileControl.PostedFile

mvh
Avatar billede bumle90 Nybegynder
04. maj 2005 - 18:13 #5
superduper :)
Takker
Avatar billede bumle90 Nybegynder
04. maj 2005 - 18:13 #6
smid et svar mester
Avatar billede snepnet Nybegynder
04. maj 2005 - 18:16 #7
får du her :o)
mvh
Avatar billede snepnet Nybegynder
07. september 2005 - 17:38 #8
hej bumle - kan du ikke acceptere her?
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester