webForumDet fria alternativet

Fånga upp en gridviews första post utanför...

.NET

8 svar · 557 visningar · startad av Travoni

Medlem sedan okt. 20041 556 inlägg
Frågan#1

Lite märklig beskrivning, men går det att utanför gridviewn fånga upp ett specefikt värde i första raden.

id | namn | telefon
1 | Per | 23332
2 | Olle | 22341
osv

Det jag alltid vill ha ut till en label (utanför gridviewn) är i detta fall "Per".

Medlem sedan maj 20012 812 inlägg
#2

Vad menar du med "utanför gridviewn". Du har din gridview tillgängligt i hela din codebehind kod, och kan när som helst i koden komma åt värden i denna genom typ:

gridview.Rows[1].Cells[2]

- M

Medlem sedan okt. 20041 556 inlägg
#3

Ok, det är en title på masterpagen som skall få det namnet.

this.master.page.title = gridview.Rows[1].Cells[2];
är de rätt tänkt?

Medlem sedan dec. 19996 721 inlägg
#4

Nej, inte riktigt. Snarara ska du ta värdet från din datakälla och stoppa in det i title. Inte hämta värdet från en kontroll till en annan.

Medlem sedan okt. 20041 556 inlägg
#5

Ok, men det jag gjort är att med en datakälla populera en gridwiew.
Och för att slippa göra ännu ett databasanrop så tänkte jag ta värdet ifrån gridviewn istället. Men har du ett bättre förslag? Vad är nackdelen med att hämta värdet ifrån en kontroll till en annan?

Medlem sedan maj 20012 812 inlägg
#6

travoni skrev:

Och för att slippa göra ännu ett databasanrop så tänkte jag ta värdet ifrån gridviewn istället.

Vad är det för data som du hämtar ut? Eftersom du vill ha titlen på sidan som något i din datagrid, är det typ en produktsidan, där du vill att titlen på sidan skall vara produktensnamn?

Vad är nackdelen med att hämta värdet ifrån en kontroll till en annan?

Din sidas title blir beroende av kontrollerer som du har i din ASPX-sida. Rent generellt så skall man kunna dela upp kodandet av ASPX-sidan och Codebehind-filen till 2 personer, det betyder att om du sitter i codebehindsidan, så skall du inte vara beroende av vilka kontroller som den andra personen lägger in på sidan (i praktiken så kan man inte det, men målet är det).

travoni skrev:

Men har du ett bättre förslag?

Ett bättre förslag är att bind din datakälla till ett dataset (kan inte förstå att jag verkligen föreslår det :) ) detta dataset kan du sedan binda till din datagrid och samtidigt hämta ut titlen till sidan. Det betyder (i teorin) att ASPX kodaren kan skifta ut datagridviewn mot en Repeater utan att du behöver ändra något i din codebehind koden.

- M

Medlem sedan okt. 20041 556 inlägg
#7

Fattar lite mer, men känner mig lite kocko. Jag har precis som i detta exempel en sqldatasource för att populera Gridviewn med och använder ingen codefile öht till det, vart sjuttsingen skall jag då fånga upp raden?

<asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSource" 
        autogeneratecolumns="true"
        emptydatatext="No data available." 
        allowpaging="true" 
        runat="server">                
      </asp:gridview>
            
      <asp:sqldatasource id="CustomersSource"
        selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
        connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" 
        runat="server"/>
Medlem sedan maj 20012 812 inlägg
#8

Travoni skrev:

Fattar lite mer, men känner mig lite kocko. Jag har precis som i detta exempel en sqldatasource för att populera Gridviewn med och använder ingen codefile öht till det, vart sjuttsingen skall jag då fånga upp raden?

Så går det när man håller på med MS klicka-gissa-spring filosofier ;)

Nu har jag aldrig använt mig av sqlDataSource, men borde du inte kunna komma åt datan från den dataSourcen i din codebehind fil istället för gridviewen.

- M

Medlem sedan okt. 20041 556 inlägg
#9

Kanske, skall kolla, återkommer för en resumé. :)

264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)