Rozdeleni textu v Textboxu do dvou parametru   zodpovězená otázka

ASP.NET WebForms

Mam stranku, kde zadavam ve dvou Textboxech promenne, ty se pak dosadi do 2 parametru SQL dotazu a vrati tabulku dat (pouzivam Gridview). Uzivatel chce zmenit zadavani a to tak, ze by se text zadaval do jednoho Textboxu ve tvaru "hodnota1/hodnota2" a ja nevim, jak jednoduse pak predat do parametru dotazu hodnotu1 a hodnotu2, aby pak probehl SQL dotaz.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No rozdělte si to pomocí Split a dále jak normálně

Dim hodnota1 As String = TextBox1.Text.Split("/")(0)
Dim hodnota2 As String = TextBox1.Text.Split("/")(1)

Split rozdělí text po nějakém znaku a vytvoří pole.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Tohle chapu, neni mi jen jasne, jak to zaridit, aby po vstupu od uzivatele (vlozi text do jednoho Textboxu)ty hodnoty byly na serveru precteny jako promenne a dosazeny do SQL, v jake udalosti to mam osetrit...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Potrebuji dostat do parametru misto nize uvedenych Controlu- TextBox1 a TextBox2 prave ten rozdeleny text, tzn.hotnotu1 a hodnotu2 a nevim, jak....

<SelectParameters>

<asp:ControlParameter ControlID="TextBox1" DefaultValue="" Name="ci"

PropertyName="Text" />

<asp:ControlParameter ControlID="TextBox2" DefaultValue="" Name="lac"

PropertyName="Text" />

</SelectParameters>

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nepíšete jaký typ SQL databáze používáte, ale v každé existují funkce pro práci s řetězci.

Pro MS SQL si můžete zadanou hodnotu rozdělit například takto:

declare @Hodnota nvarchar(100) = '1234/567'

declare @PoziceLomitka int = charindex('/', @hodnota)
select
	'PrvniCast'=substring(@Hodnota, 0, @PoziceLomitka),
	'DruhaCast'=substring(@Hodnota, @PoziceLomitka+1, len(@Hodnota))

Prijde mi to přehlednější než modifikace parametrů v nějaké události SqlDatasource apod.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

pouzivam SQL server.. Dekuji za napovedu, Vami navrzeny postup si dokazu predstavit v prostredi primo dotazu SQL (treba v SQL Server management Studiu), ale nevim, jak ty upravene hodnoty dosadit v kodu stranky...Dokazu z hodnoty '1234/567' pomoci textovych funkci ziskat oba retezce a dokazu je vratit i do dvou Textboxu, ale nevim, jak je pak dal predat do dotazu, nejlepe jako parametry... Omlouvam se, jestli se ptam spatne..

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Úplně stejně jako v Management Studiu. V tom není žádný rozdíl.

Příklad dotazu (předpokládam vstupní parametr @Hodnota):

declare @PoziceLomitka int = charindex('/', @Hodnota)
declare @PrvniCast nvarchar(100)=substring(@Hodnota, 0, @PoziceLomitka)
declare @DruhaCast nvarchar(100)=substring(@Hodnota, @PoziceLomitka+1, len(@Hodnota))

select * from NejakaTabulka where Sloupec1=@PrvniCast and Sloupec2=@DruhaCast

Pro přehlednost by samozřejmě bylo lepší nedávat tento dotaz přímo do ASPX, ale vytvořit uloženou proceduru a tu volat z ASPX.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud chcete rozdělní provést v ASP.NET (místo SQL), tak to lze udělat v události SqlDataSource_Selecting.

Příklad (v C#):

protected void SqlDataSource_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
	// ... rozdelim si hodnotu v TextBoxu pomoci split ...
	e.Command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Prvni", "ab"));
	e.Command.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Druha", "cd"));
}

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dekuji, myslim si, ze tohle jsem potrebovala. Nevedela jsem jen, jakou udalost SQLDataSource pouzit, zda Select ci Selecting ci jinou. Vykousim a dam vedet..:-)Moc jste mi pomohl.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jeste poznamku, nakonec jsem vyzkousela jeste jeden zpusob, jak text z jednoho Textboxu rozdelit do dvou textu a vlozit je jako parametry do dotazu - pomoci udalosti TextBox_TextChanged jsem zadany text do TextBoxu1 rozdelila do dvou dalsich (skrytych) TextBoxu a hodnoty z nich pak uvedla jako parametry selectu. Odpadlo tak premysleni, jakeho typu je promenna, ziskana z puvodniho TextBoxu. To jen na okraj.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

No tohle mi nepřijde jako nejšťastnější řešení,ale je pravda,že v takto "nízké" režii je to asi jedno.Hlavně,že funguje ;-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback