Laden...

Forenbeiträge von tom-cat Ingesamt 77 Beiträge

02.11.2010 - 09:28 Uhr

Guten morgen zusammen,

in meinem Script liefert die Abfrage nur einen Datensatz zurück, obwohl mehrere Datensätze in der Datenbank enthalten sind.

Hat da jemand eine Idee warum ?

 protected void Page_Load(object sender, EventArgs e)
        {
            //PanelShowGrid.Visible = false;
           
            // Supplierer laden
            int CompID = (int)(Session["CompID"]);
            string conString;

            if (Page.IsPostBack)
            {
                //Label3.Text = "You have selected " + DDLSupplier.SelectedItem.Value;
                int _DDLItem = Convert.ToInt32(DDLSupplier.SelectedItem.Value);
            

              try
                {
                    data.DataClassesConnectionStringsDataContext db = new data.DataClassesConnectionStringsDataContext();
                    var con = from c in db.ApplSettings
                              where c.companyID == CompID
                              select c;

                    foreach (var conns in con)
                    {
                        //Label1.Text = conns.constring;
                        conString = conns.constring;

                        string strSQLconnection = conString;
                        SqlConnection sqlConnection = new SqlConnection(strSQLconnection);
                        SqlCommand sqlCommand = new SqlCommand("SELECT ForeignInvoiceID,InvoiceNumber,SupplierName,InvoiceDate,GrossAmount FROM Asmbl_Invoice where StandardSupplierID = '" + _DDLItem + "'", sqlConnection);
                        sqlConnection.Open();
                        SqlDataReader reader = sqlCommand.ExecuteReader();

                        while (reader.Read())
                           
                        {

                            int _ForeignInvoiceID = reader.GetInt32(0);
                            string _InvoiceID = reader.GetString(1);
                            string _Supplier = reader.GetString(2);
                            DateTime _Date = reader.GetDateTime(3);
                            //float _GrossMount = reader.GetFloat(4);

                            lbInoviceNumber.Text = _InvoiceID;
                            lbSupplier.Text = _Supplier;
                            lbDate.Text = Convert.ToString(_Date);
                            //lbGrossMount.Text = Convert.ToString(_GrossMount);

                            // Jetzt hier die daten auslesen für die URL

                            try
                            {
                                string conStr = ConfigurationManager.ConnectionStrings["aequitixx_InvoiceScansConnectionString"].ConnectionString;
                                string _URL = "";
                                SqlConnection objCon = new SqlConnection(conStr);
                                string sqlBefehl = "Proc_GetImageViewerURLhttps";

                                SqlCommand objCommand = new SqlCommand(sqlBefehl, objCon);
                                objCommand.CommandType = CommandType.StoredProcedure;
                                SqlParameter meinParam = objCommand.Parameters.Add(new SqlParameter("@ForeignInvoiceID", SqlDbType.VarChar, 50));
                                meinParam.Direction = ParameterDirection.Input;
                                meinParam.Value = _ForeignInvoiceID;
                                SqlDataAdapter objAdapter = new SqlDataAdapter();
                                objAdapter.SelectCommand = objCommand;

                                objCon.Open();
                                _URL = objCommand.ExecuteScalar().ToString();

                                PDFAnzeigen.Attributes["href"] = _URL;
                                PDFAnzeigen.Attributes["class"] = "bumpbox";
                                objCon.Close();
                                objCon = null;
                                
                            }
                            catch (Exception e2)
                            {
                                Label1.Text = "Fehler :" + e2;
                            }
                                                                                  
                        
                        }
                        reader.Close();
                                      
                    } 
              }
                
                catch (Exception e1)
                {
                    Label1.Text = "Fehler bei der Abfrage:" + e1;
                }
                     
           }
            
            try
            {
                data.DataClassesConnectionStringsDataContext db = new data.DataClassesConnectionStringsDataContext();
                var con = from c in db.ApplSettings
                          where c.companyID == CompID
                          select c;

                foreach (var conns in con)
                {
                    //Label1.Text = conns.constring;
                    conString = conns.constring;

                    string strSQLconnection = conString;
                    SqlConnection sqlConnection = new SqlConnection(strSQLconnection);
                    SqlCommand sqlCommand = new SqlCommand("SELECT DISTINCT SupplierName, StandardSupplierID FROM Asmbl_Invoice", sqlConnection);
                    sqlConnection.Open();
                    SqlDataReader reader = sqlCommand.ExecuteReader();
                                        
                    DDLSupplier.DataTextField = "SupplierName";
                    DDLSupplier.DataValueField = "StandardSupplierID";
                    DDLSupplier.DataSource = reader;
                    DDLSupplier.DataBind();
                    DDLSupplier.Items.Insert(0, "-- Lieferant wählen --");
                                       
                
                }

            }
            catch (Exception e1)
            {
                Label1.Text = "Fehler bei der Abfrage:" + e1;
            }

        }
21.10.2010 - 17:42 Uhr

Jap okay das leuchtet mir nun auch ein.
Nur wie kann ich den Link im RowDataBound erstellen lassen ?

Ich habe beim RowCommand ja direkt auf das selected Row referenziert.

den Link auf dem Row würde ich so erstellen

  e.Row.Cells[2].CssClass = "bumpbox";
                e.Row.Cells[2].Attributes["href"] = URL;

Doch ich muss ja um überhaupt die URL zu generieren die ForeignInvoiceID aus der Row ziehen.
Wie kann ich denn darauf zugreifen, vorallem wenn es mehrere Ergebnisse also Rows geben kann.
Also die ForeignInvoiceID ist immer der Eindeutige Schlüssel pro Row !

21.10.2010 - 16:15 Uhr

okay sorry also nochmal genau von vorne 😃

  • Hab ne Textbox wo ich eine Nummer eintrage
  • Anhand dieser Nummer wird ein GridView erzeugt
  • in dem Gridview befindet sich ein Button zum anzeigen der Rechnung
  • RowCommand darauf ist gesetzt und funktioniert ja auch

jetzt möchte ich die PDF Datei nicht auf einer neuen Seite anzeigen, sondern in einer Lightbox.
Dazu habe ich diese auch schon in mein Projekt eingebunden.
Das ist die bumpBox von http://www.artviper.net/website-tools/website-tools-download.php
Diese Funktioniert soweit sehr gut, ich habe das mit einem normalen Hyperlink mal getestet.

So nochmal zurück zu dem was ich eig. möchte.

  • Ich drübe im GridView auf den Button
  • geh damit in meinm CommandRow rein mit der Übergabe der ForeignInvoiceID
  • gehe damit in meine Datenbank und lade mir die URL der PDF Datei zum Anzeigen
    =>>> Jetzt sollte dann die Bumpbox aufgehen und die PDF Datei angezeigt werden !

Ich hoffe ich hab das jetzt verständlich genug geschrieben 😃)

21.10.2010 - 15:46 Uhr

Ich versteh das irgendwie immer noch nicht.

Also ich würde das ganze mit dem Postback machen =?!

 protected void Page_Load(object sender, EventArgs e)
        {


            if (Page.IsPostBack)
            {

                
            }
          
           

Wie fange ich denn den Button klick ab, und wie kann ich dann direkt die Seite öffnen und die geforderten Attribute wie cssclass mitgeben ?! Steh gerade völlig auf dem Schlauch irgendwie 😦((

21.10.2010 - 13:29 Uhr

hmmm versteh ich gerade irgendwie nicht,

bei einem normalen Linkbutton wo ich draufklicke kann ich das wie folgt versehen:

LinkButton1.Attributes["class"] = "bumpbox";
             
                LinkButton1.Attributes["href"] = URL;

Jedoch kann ich den Button gar nicht im CodeBehind ansteuern welcher sich im Grid befindet.

Das CommandArgument funktioniert soweit, wie du oben im Code sehen kannst, nur brauche ich den Link nicht auf eine andere Seite sondern muss die erzeugte "URL" mit der CSS Classe "bumpbox" aufrufen.

Ich weiss gerade nicht wo ich das nun einbinden soll ?
Im RowCommand ? oder beim Erzeugen des Grids ?

21.10.2010 - 12:10 Uhr

Aber was meinst Du mit "Link auf den Button drauf bekommen?"

Ich muss dem Button, den Link mitgeben, wo er ja hinsoll !
Das mache ich derzeit ja im CommandRow, dort lese ich bei Klick die Zeile aus, sowie die ForeignID die ich brauche um die Daten nachher aus der Datenbank zu holen (den wirklichen Link), dieser wird mittels einer PROC erstellt und den Link zur PDF muss ich ja dem Button zuweise, das er weiss was er anzeigen soll.

Dort weiss ich nicht wie ich das zuweisen soll.

21.10.2010 - 11:43 Uhr

Super danke dir für die Antwort,

nur ich komme nicht auf den Button im CodeBehind drauf.
Hier ist mein Grid

 <asp:GridView ID="GVInvoices" runat="server" CellPadding="4"
                            ForeColor="#333333" GridLines="None" onrowcommand="GVInvoices_RowCommand">
                            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                            <Columns>
                                <asp:ButtonField CommandName="ShowPDF" Text="PDF Anzeige" ButtonType="Button" 
                                    ImageUrl="~/images/rechnung.gif" />
                            </Columns>
                            <EditRowStyle BackColor="#999999" />
                            <FooterStyle BackColor="White" Font-Bold="True" ForeColor="White" />
                            <HeaderStyle BackColor="White" Font-Bold="True" ForeColor="White" />
                            <PagerStyle BackColor="White" ForeColor="White" HorizontalAlign="Center" />
                            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                            <SortedAscendingCellStyle BackColor="#E9E7E2" />
                            <SortedAscendingHeaderStyle BackColor="#506C8C" />
                            <SortedDescendingCellStyle BackColor="#FFFDF8" />
                            <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
                        </asp:GridView>

Ich habe wie du siehst, bei dem Button ein CommandName wo ich reinspringe und derzeit noch mit Respons.Redirect eine andere Seite aufrufe, mit der ID aus dem Row

Wie bekomme ich denn die CSS Class und den Link auf den Button drauf ?!

Hier zur Vorsicht nochmal das RowCommand

            // Show PDF
            if (e.CommandName == "ShowPDF")
            {
   
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow selectedRow = GVInvoices.Rows[index];
                TableCell ForeignInvoiceID = selectedRow.Cells[1];
                string InvoiceID = ForeignInvoiceID.Text;

                Response.Redirect("frmShowPDFInvoice.aspx?InvoiceID=" + InvoiceID);
  
            }
21.10.2010 - 11:33 Uhr

hallo zusammen,

ich erstelle ein normales GridView und habe dort einen Button eingefügt, der ein RowCommand aufruft.
Nun möchte ich, das bei Click auf den Button eine "lightbox" aufgeht.
Dazu muss ich wie in einem Link (href) eine class="bumb" mitgeben, damit die Box aufgerufen wird.

Bei einem Link ist das kein Problem mit Atributes.Add, jedoch bei dem Button weiss ich nicht wie das gehen sollte.

14.10.2010 - 11:56 Uhr

Cool Danke dir !
😃

14.10.2010 - 11:41 Uhr

Danke euch,
ich habe es jetzt ohne das Standard Ding von MS gelöst und selber geschrieben. Funzt einwandfrei 😉

Super Forum 😉

14.10.2010 - 11:37 Uhr

Hallo zusammen,

ich habe folgendes Problemchen.
Ich habe eine Seite via SSL veröffentlicht.
Dort kann man nach einer PDF Datei suchen.
Die Suche / URL der PDF Datei wird mittels einer PROC gesetzt und mir zurückgegeben und auf einen Link gelegt.
Webserver und Fileserver (wo die PDFs liegen sind unterschiedliche Systeme)
Der Webserver ist veröffentlicht und via https ansprechbar.

Solange ich im Netzwerk bin, kann ich mir die Dateien anzeigen lassen, sobald ich extern bin, kann ich mir zwar die https Seite anzeigen lassen, jedoch nicht die PDF da die URL mit einer internen IP generiert wird.

Was ist nicht möchte, ist den Fileserver veröffentlichen mit einer IP Adresse. Das wäre zwar die schnellste Variante aber auch die unsicherste.

Was gibt es noch für möglichkeiten das ich mir wenn ich extern bin über die https seite die PDFs von dem Fileserver laden kann ???

13.10.2010 - 13:22 Uhr

OK,
wie machst du denn den Request ? Also hast du das auf jeder Seite dann von dir eingebunden ??

13.10.2010 - 12:22 Uhr

hmmm ... darf man davon etwas mehr erfahren ? 😃
Bin in der Sicht noch absoluter Neuling und will mich nicht in irgendwas verrennen ...

13.10.2010 - 12:03 Uhr

Hallo MarsStein,

was nutzt du denn für ein LoginSystem ?

13.10.2010 - 11:19 Uhr

Hallo zusammen,

ich habe ein kleines Login-System welches mich Authentifiziert und auf die Sicheren Seiten weiterleitet.

Nun habe ich aber das Problem, das wenn ich die Unterseite direkt in der URL aufrufe, bekomme ich diese ohne Authentifierung angezeigt.

Wie kann ich das schützen ?

Hier ein kleiner Code von mir:


protected void Button1_Click(object sender, EventArgs e)
        {
            // Create a custom FormsAuthenticationTicket containing
            // application specific data for the user.
            // PROC Proc_Check_Password_and_Mandant

            string username = tbUsername.Text;
            string password = tbPassword.Text;
            string mandant = tbMandant.Text;
            bool isPersistent = false;

           // string username = EDMLogin.UserName;
           // string pwd = EDMLogin.Password;

                string strConn;
                strConn = WebConfigurationManager.ConnectionStrings["ConnectionASPX"].ConnectionString;
                SqlConnection Conn = new SqlConnection(strConn);
                Conn.Open();
           
                string pwdhash = "";
                string sqlBefehl = "Proc_Check_Password_and_Mandant";
            
                SqlCommand objCommand = new SqlCommand(sqlBefehl, Conn);
                objCommand.CommandType = CommandType.StoredProcedure;
                SqlParameter SPusername = objCommand.Parameters.Add(new SqlParameter("@username", SqlDbType.VarChar, 20));
                SqlParameter SPpassword = objCommand.Parameters.Add(new SqlParameter("@password", SqlDbType.VarChar, 200));
                SqlParameter SPmandant = objCommand.Parameters.Add(new SqlParameter("@mandant", SqlDbType.Int));    
                SPusername.Direction = ParameterDirection.Input;
                SPpassword.Direction = ParameterDirection.Input;
                SPmandant.Direction = ParameterDirection.Input;    
                SPusername.Value = username;
                SPpassword.Value = password;
                SPmandant.Value = mandant;
            
            
                SqlDataAdapter objAdapter = new SqlDataAdapter();
                objAdapter.SelectCommand = objCommand;
                pwdhash = objCommand.ExecuteScalar().ToString();

                //Label1.Text = pwdhash;

              
                     
                     if (pwdhash == "1")
             
                     {

                   
                        string userData = "ApplicationSpecific data for this user.";

                        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
                          username,
                          DateTime.Now,
                          DateTime.Now.AddMinutes(1),
                          isPersistent,
                          userData,
                          FormsAuthentication.FormsCookiePath);

                        // Encrypt the ticket.
                        string encTicket = FormsAuthentication.Encrypt(ticket);

                        // Create the cookie.
                        Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));

                        // Redirect back to original URL.
                        Response.Redirect(FormsAuthentication.GetRedirectUrl(username, isPersistent));
                         
                    
                        
                     }

               else
               {
                   Label1.Text = pwdhash;
                     Session["UserAuthentication"] = "";
                   //Response.Redirect("logindestroy.aspx");
               }

        }

und die Web.Config schaut so aus:


 <system.web>
        <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Forms">
      <forms loginUrl="login.aspx"
        defaultUrl="secure/frmStartContent.aspx" />
    </authentication>
  </system.web>

04.10.2010 - 10:00 Uhr

Hallo zusammen,

ich habe eine Textbox und eine Dropdownlist.
Wenn die Seite geladen wird, lasse ich die DropDownliste befüllen.
Nun möchte ich, wenn ich einen Eintrag in der Dropdownlist gewählt habe, das Value der DropDownList in die Textbox schreiben, jedoch nicht die Seite neu laden.

Jemand ne Idee ? 😃

27.09.2010 - 17:17 Uhr

Alles klaro !
Heut ist nicht mein Tag !

Vielen dank !;)

27.09.2010 - 15:26 Uhr

Noch eine kurze Frage bez. ich hab ein kleines Problemchen noch :

            string rCompanyID;
            string rRollsID;
            string rDababaseID;

            rCompanyID = checkedListBoxCompanys.SelectedValue.ToString();
            rRollsID = checkedListBoxRolls.SelectedValue.ToString();
            rDababaseID = checkedListBoxDatabases.SelectedValue.ToString();
            
            // Benutzer anlegen
            data.BenutzerDataContext db = new data.BenutzerDataContext();
            var q = (from i in db.User
                     select (i.UID)).Max();

            int RefUID = q + 1;

            int databaseID = Convert.ToInt32(rDababaseID);
           
            data.User newUser = new data.User();

           
            newUser.Database = databaseID;
            newUser.Username = tbUsername.Text;

Dabei Markert mit VS2010 immer noch die Zeile "newUser.Database = databaseID;" an mit dem Fehler:

Fehler 1 Eine implizite Konvertierung vom Typ "int" in "Tool.data.Database" ist nicht möglich.

27.09.2010 - 12:55 Uhr

Hat sich erledigt.
Wer lesen kann ist klar im Vorteil.

Wenn ich nur den CompanyName abfrage, kann ich auch keine ID reinbekommen !

Besten Dank !

27.09.2010 - 12:47 Uhr

Hi Michlg,

besten Dank für deinen Hinweis.

Ich habe die ListBox nun über ein Binding gebunden. Vorher habe ich die Einträge mit Item.Add reingeballert.

data.BenutzerDataContext db = new data.BenutzerDataContext();
            
            // Companys auslesen
            data.Company comp = new data.Company();
            var companys = from i in db.Company
                           select i.CompanyName;



            (checkedListBoxCompanys as ListBox).DataSource = companys;
            (checkedListBoxCompanys as ListBox).DisplayMember = "CompanyName";
            (checkedListBoxCompanys as ListBox).ValueMember = "UID";

So sieht das derzeit aus, die Einträge erscheinen auch, jedoch wie bekomm ich dir Abfrage drauf ?

Ich gehe wohl in die Action des SelectedIndexChanged der Listbox rein, nur wie bekomm ich die ID raus ? 😃

Kleiner Edit hier noch:
Mit der Abfrage

   lvResult = checkedListBoxCompanys.SelectedValue.ToString();

bekomme ich auch nur den CompanyName anzeigt, obwohl ich dem valueMember die Uid zugewiesen habe

26.09.2010 - 22:06 Uhr

verwendetes Datenbanksystem: MSSQL Server 2005

Hallo zusammen,

ich bin dabei eine Abfrage zu erstellen. Meine DB Struktur Sieht wie folgt aus:

DB Users
+- username
+- password
+- companyID
+- applID

DB Companys
+- UID
+- CompanyName

DB Applications
+- UID
+- ApplName

CompanyID => UID aus Companys
applID => UID aus Applications

Jetzt habe ich auf meiner Form 2 ListBoxen wo mir die Companys anhand des CompanyName und Applications anhand der ApplName anzeigt wird.

Der Benutzer trägt eben Usernamen und Passwort in einer Textbox ein und wählt die die Company und Appli. in der ListBox aus.

Das Problem ist, wenn ich die ListBoxen abfange, bekomme ich den TEXT der gewählen Boxen angezeigt und nicht die ID, die in die Datenbank USERS eingetragen werden muss.

Wie kann ich nun das Insert in die Datenbank USERS realisieren ?
Ich steh da gerade irgendwie aufm Schlauch 😃

Danke euch schon mal ...

22.09.2010 - 13:47 Uhr

Hallo zusammen,

ich löse mittels einer Funktion einen Abruf einer PDF Datei auf und lasse diese derzeit per POPUP (neues Browserfenster) anzeigen.

Da es immer wieder Probleme mit Popupblocker gibt, war meine Idee folgende:

Ich habe eine neue Seite, in der die URL / Pfad von der PDF abgerufen wird, und dann in einem DIV Layer angezeigt wird.

Finde jedoch gerade nicht wirklich was dazu.

Hat jemand eine Idee ?

18.09.2010 - 23:19 Uhr

Hallo zusammen,

wie kann ich ein String in ein INT umwandeln und in die PROC Übergeben ?

            data.InvoicesDataContext db = new data.InvoicesDataContext();
            var q = from i in db.Proc_SP_GetInvoiceDetails(ident)
                    where db.Proc_SP_GetInvoiceDetails.ForeignInvoiceID = ident
                    select i;

Die Variable "ident" enthält den Stringwert den ich aus einer URL lese.

18.09.2010 - 21:41 Uhr

Hallo zusammen,

ich möchte gerne eine ganz normale Tabelle mit LINQ Daten füllen.

Folgendes habe ich schon:

<table cellpadding="0" cellspacing="0" class="style1">
        <tr>
            <td>
                PDF</td>
            <td>
                Bearbeiten</td>
            <td>
                ForeignInvoiceID</td>
            <td>
                Lieferant</td>
            <td>
                Netto</td>
            <td>
                Steuer</td>
            <td>
                Brutto</td>
            <td>
                Währung</td>
        </tr>
        <tr>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
            <td>
                &nbsp;</td>
        </tr>
    </table>

Und hier hole ich mir meine Daten

protected void Page_Load(object sender, EventArgs e)
        {

     
            data.InvoicesDataContext db = new data.InvoicesDataContext();
            var invoices = from i in db.Proc_SP_GetAllInvoices()
                           where i.UserID == globale_classes.username 
                           select i;

        }

In dein GridView bekomme ich ohne Probleme meine Daten rein, das möchte ich aber nicht.
Wie kann ich die Daten nun in eine Tabelle darstellen ? oder in die Tabellen-Spalten Labels oder so.

Es werden mehrere Zeilen angezeigt dabei ....

Jemand eine Idee ?

11.09.2010 - 15:59 Uhr

Hi

danke für die schnelle Antwort. Joar von der theorie verstanden 😃
Hast du nen kleinen Codeschnippsel dafür ?
Die Abfrage der Stored Produce hab ich, ich muss dort nur die Varibale übergeben die beim Click auf den Button kommt.

11.09.2010 - 15:32 Uhr

Okay ich bin schon sehr weit gekommen.

Nun habe ich nur ein Problem mit dem Button im GridView.
Ich bin im Click Event des Buttons und muss irgendwie die geklickte Zeile ja auslesen bez. mit die ID der Zeile auslesen damit ich diese weiter an die Prog geben kann.

Wie kann ich auf die geklickte Zeile also referenzieren und mir die ID in einem String liefern lassen ?

Danke euch ...

10.09.2010 - 14:39 Uhr

Hallo zusammen,

ich bin noch recht neu im Thema C# und asp.net dennoch hier eine knifflige Sache.
Ich habe folgendes Vor.

Ein GridView wird befüllt. <-- Klappt ohne Probleme mittels des SQLDataSource.
In den Grid befindet sich dann auf jeder Zeile ein Button.

Wenn man den Button anklickt, soll eine ID (aus dem GridView) an eine Stored Produce übergeben werden.
Der Wert der aus der SQL Abfrage kommt ist eine URL. Diese Url muss dann komplett so aufgerufen werden in einem neuen Explorere Fenster.

So wie gesagt das DataView steht !
Auch der Button da drin. Jedoch weiss ich nicht welche Prozedur darauf geht auf das Click event und wie ich dann den rest mache (wie oben beschrieben)

Würde mich echt über eine Antwort hier freuen.

LG