Avatar
renew357
Člen
Avatar
renew357:

mám takýto kód na vloženie do tabuľky

InsertCommand="INSERT INTO [Table] ([AutorId], [Date], [Text], [Title]) VALUES (@AutorId, @Date, @Text, @Title)"

a potrebujem mu nastavit hodnotu, id prihláseného používateľa

System.Web.Security.MembershipUser myObject = Membership.GetUser();
        hodnota = myObject.ProviderUserKey.ToString();

viete mi s tým poradiť? neviem ako povedať tomu insert commandu ktorú hodnotu má na miesto @AutorId dosadiť
Ďakujem

 
Odpovědět 31.8.2014 23:46
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na renew357
Jan Vargovský:
command.Parameters.Add(new SqlParameter("sloupec", hodnota));
 
Nahoru Odpovědět 31.8.2014 23:55
Avatar
renew357
Člen
Avatar
Odpovídá na Jan Vargovský
renew357:

Ďakujem, len ten insert command mám v súbore názov.aspx a tú druhú časť kódu v názov.aspx.cs

zabudol som dodať že sa jedná o asp.net webforms

 
Nahoru Odpovědět 1.9.2014 0:05
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na renew357
Jan Vargovský:

Ve webformech jsem nikde nedělal, ale řekl bych, že ty třídy jsou partiální, takže se klasický spojí do jednoho, takže ten insertcommand půjde nějakým způsobem pojmenovat a ty parametry si tam pak můžeš v code-behindu přidat. Kdybys na to nepřišel, tak snad ti někdo pomůže.

Editováno 1.9.2014 0:13
 
Nahoru Odpovědět 1.9.2014 0:13
Avatar
Odpovídá na renew357
Michal Štěpánek:

Vygenerovaný insert si určitě sám udělal i parametry.
Udělej si HiddenField ve Formu a dej mu hodnotu toho UserId

<asp:HiddenField ID="HF_UserId" runat="server" Value='<%# Bind("AutorId") %>' />

a v souboru nazov.aspx.cs mu přidělíš hodnotu, kterou si kódem zjistíš...

(FormView1.FindControl("HF_UserId") as HiddenField).Value = userid;

Snad jsem to napsal dost srozumitelně... :-)

Nahoru Odpovědět  +1 1.9.2014 15:03
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
renew357
Člen
Avatar
Odpovídá na Michal Štěpánek
renew357:

Ahoj, zrejme som zle pochopil tvoj príspevok, vyhadzuje mi nasledujúcu chybu

Object reference not set to an instance of an object.
Line 20:         (FormView1.FindControl("HF_UserId") as HiddenField).Value = userId;

takto vyzera kód v nazov.aspx.cs

protected void Page_Load(object sender, EventArgs e)
   {


       System.Web.Security.MembershipUser myObject = Membership.GetUser();
       string userId = myObject.ProviderUserKey.ToString();

       (FormView1.FindControl("HF_UserId") as HiddenField).Value = userId;


   }

a takto v nazov.aspx

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Login1ConnectionString %>" InsertCommand="INSERT INTO [Entries] ([AutorId], [Date], [Text], [Title]) VALUES (@AutorId, @Date, @Text, @Title)" >
    <InsertParameters>
        <asp:Parameter Name="AutorId" Type="String" />
        <asp:Parameter Name="Date" Type="DateTime" />
        <asp:Parameter Name="Text" Type="String" />
        <asp:Parameter Name="Title" Type="String" />
    </InsertParameters>

</asp:SqlDataSource>
<asp:FormView ID="FormView1" runat="server" DataKeyNames="ID_e" DataSourceID="SqlDataSource1">

    <InsertItemTemplate>

        <asp:HiddenField ID="HF_UserId" runat="server" Value='<%# Bind("AutorId") %>' />


        <asp:TextBox ID="TextTextBox" runat="server" Text='<%# Bind("Text") %>' />
        <br />
        Title:
        <asp:TextBox ID="TitleTextBox" runat="server" Text='<%# Bind("Title") %>' />
        <br />
      </InsertItemTemplate>

</asp:FormView>

podľa chyby ktorú mi vyhadzuje by som povedal že asi nevie nájsť ten hiddenfield v tom formview1

 
Nahoru Odpovědět 1.9.2014 18:38
Avatar
Michal Štěpánek:

Spíš bych zkusil dá to userid na začátek, ještě před page load

public string userid;

pak v page_load do něj přiřadit hodnotu a pak tu hodnotu teprve dát do toho hiddenfield

Editováno 1.9.2014 19:08
Nahoru Odpovědět 1.9.2014 19:06
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Michal Štěpánek:

protože takhle, jak to máš, se o tom userId ví jen v události Page_Load a při ukládání FormView1 už neví, co je userId...

Nahoru Odpovědět 1.9.2014 19:13
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
renew357
Člen
Avatar
Odpovídá na Michal Štěpánek
renew357:

no je to bez zmeny, stále to vyhadzuje tú chybu :o
p.s. som zabudol dať v predoslom príspevku este na koniec inseritemtemplate

<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" />
         &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" />
 
Nahoru Odpovědět 1.9.2014 19:22
Avatar
renew357
Člen
Avatar
Odpovídá na Michal Štěpánek
renew357:

no ak to spravne chápem takto to má byť? Lebo takto to nefunguje;(

public string userid;
protected void Page_Load(object sender, EventArgs e)
{


    System.Web.Security.MembershipUser myObject = Membership.GetUser();
    userid = myObject.ProviderUserKey.ToString();

    (FormView1.FindControl("HF_UserId") as HiddenField).Value = userid;


}
 
Nahoru Odpovědět 1.9.2014 19:43
Avatar
Odpovídá na renew357
Michal Štěpánek:

V podstatě by to takto mělo být. Já používám pro přihlašování uživatelů ASP.NET Identity, pak je userId takto

userid = Context.User.Identity.GetUserId();

Zkoušel sis někam vypsat, co ti to tvoje userId ukazuje za hodnotu? Mě to totiž připadá, že je to prázdné...

Nahoru Odpovědět 1.9.2014 20:27
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
renew357
Člen
Avatar
Odpovídá na Michal Štěpánek
renew357:

aj ja som si myslel či nieje null ale bez problémov ho vie nastaviť ako text pre lable, dokonca som mu skúsil hodiť natvrdo Idčko jedného používateľa v tom súbore nazov.aspx.cs a nefungovalo to
funguje to len keď natvrdo v nazov.aspx zadám v insert parameters default value = idčko, ale to je mi takmer zbytočné

 
Nahoru Odpovědět 1.9.2014 20:55
Avatar
Odpovídá na renew357
Michal Štěpánek:

Ten Label byl součástí toho FormView1? A jako text do textboxu ti to taky jde? Pokud ano, tak to zkus uložit s tím, že "nabinduješ" ten parametr do toho textboxu...

Nahoru Odpovědět 1.9.2014 21:56
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na renew357
Michal Štěpánek:

Ještě mě napadlo, ten datum ukládáš jak, resp. z čeho?

Nahoru Odpovědět 1.9.2014 21:58
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
renew357
Člen
Avatar
Odpovídá na Michal Štěpánek
renew357:

Nie ten label je mimo formview, ale keď si to napísal skúsil som ho hodiť teda do insertitemtemplate a pristupovať k nemu z nazov.aspx.cs takto

(FormView1.FindControl("Label1") as Label).Text= userid;

a skončilo to rovnako

Object reference not set to an instance of an object.
neviem prísť na to v čom je chyba ;(

Dátum nevypĺňam, sql tabulka ma default value GATEDATE()

Editováno 1.9.2014 22:06
 
Nahoru Odpovědět 1.9.2014 22:05
Avatar
Odpovídá na renew357
Michal Štěpánek:

Pokud máš Getdate(), nemšl bys ho mít v tom instertu...
vypiš mi, jeké máš v té stránce .cs usingy, píše ti to něco o referencích
já mám toto

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.AspNet.Identity;
using System.Configuration;
using System.Data.SqlClient;

a funguje to...

Editováno 1.9.2014 22:32
Nahoru Odpovědět 1.9.2014 22:30
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
renew357
Člen
Avatar
Odpovídá na Michal Štěpánek
renew357:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Configuration;        //tento som si doplnil z tvojich usingov
using System.Data.SqlClient;       //tento som si doplnil z tvojich usingov


public partial class Default2 : System.Web.UI.Page
{
    public string userid;
    protected void Page_Load(object sender, EventArgs e)
    {


        System.Web.Security.MembershipUser myObject = Membership.GetUser();
        userid = myObject.ProviderUserKey.ToString();
       // (FormView1.FindControl("Label1") as Label).Text= userid;
     (FormView1.FindControl("HF_UserId") as HiddenField).Value = userid;


    }
}
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConnectionString="<%$ ConnectionStrings:Login1ConnectionString %>"
    InsertCommand="INSERT INTO [Entries] ([AutorId], [Text], [Title]) VALUES (@AutorId, @Text, @Title)" >
    <InsertParameters>
        <asp:Parameter Name="AutorId" Type="String" />
        <asp:Parameter Name="Text" Type="String" />
        <asp:Parameter Name="Title" Type="String" />
    </InsertParameters>

</asp:SqlDataSource>
<asp:FormView ID="FormView1" runat="server" DataKeyNames="ID_e" DataSourceID="SqlDataSource1">


    <InsertItemTemplate>

        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

        <asp:HiddenField ID="HF_UserId" runat="server" Value='<%# Bind("AutorId") %>' />


        <asp:TextBox ID="TextTextBox" runat="server" Text='<%# Bind("Text") %>' />
        <br />
        Title:
        <asp:TextBox ID="TitleTextBox" runat="server" Text='<%# Bind("Title") %>' />

        <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" />
          &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" />
      </InsertItemTemplate>

</asp:FormView>


</asp:Content>
Editováno 1.9.2014 22:49
 
Nahoru Odpovědět 1.9.2014 22:49
Avatar
Odpovídá na renew357
Michal Štěpánek:

Chyb v tom nevidím, ale už jsem řešil podobný problém a vyřešil jsem ho spácháním nové stránky...
ten using

using System.Data.SqlClient;

je tam, když potřebuješ do DB přistupovat z kódu.

Nahoru Odpovědět 2.9.2014 9:42
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
renew357
Člen
Avatar
Odpovídá na Michal Štěpánek
renew357:

ok nevadí, aj tak ďakujem ti za snahu ;)

 
Nahoru Odpovědět 2.9.2014 20:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 19 zpráv z 19.