webForumDet fria alternativet

Ta fram/ta bort kolumn för en datagrid i aspx-sidan? (+ lite fler frågor)

.NET

2 svar · 315 visningar · startad av CokeLight

Medlem sedan juni 2000504 inlägg
Frågan#1

Hejsan,

Fråga 1:
Kan man ta ta fram/ta bort kolumner för en DataGrid i aspx sidan beroende på hur styrparametrar är satta? Eller går det bara från code-behind filen?

Just nu innehåller min aspx sida bl.a:

<asp:datagrid id="....">
	<Columns>
		<asp:BoundColumn DataField="yyy" SortExpression="yyy" HeaderText="yyy"></asp:BoundColumn>
		<asp:BoundColumn DataField="zzz" SortExpression="zzz" HeaderText="zzz"></asp:BoundColumn>
	</Columns>
</asp:datagrid>

Fråga 2:

Kan jag ändra t.ex. CSS filen beroende på samma parameter? I gamla ASP kunde man blanda HTML o ASP lite hur som helst o skriva t.ex.

<link href="<%=cssNamn%>" rel="stylesheet">

men hur brukar/kan man göra i ASP.NET?

Fråga 3:

Man kan ju binda data till en DataGrid osv mha. t.ex. minDataGrid.DataSource = minKälla();

men ibland har jag bara en rad jag skulle vilja skriva ut, o tänkte att man kanske skulle ha en <asp:Label id="minLabel"> men label har ju inte nån datasource, typ minLabel.DataSource. Hur kan man göra detta? Jag drog till med en repeater men det måste väl finnas bättre sätt?

Om det var nåt som var oklart så förklarar jag gärna igen :)

Medlem sedan apr. 20012 266 inlägg
#2

vad menas med 'styrparametrar'? QuertStrings?

Medlem sedan juni 2000504 inlägg
#3

Ja, ungefär.. :) Jag kollar AppSetting key i web.config och beroende på vad den säger så har jag en boolean metod som säger vilken stored procedure som ska anropas. Men problemet (såsom jag upplever det) uppstår när en SP skickar med data för en (datagrid) kolumn medan en annan inte gör det. Om DataGrid:en är statiskt skriven i aspx filen så får jag felmsg att en kolumn inte fick data eller nåt sånt...

Provade imorse ungefär så här i aspx.cs istället och då är det ju lätt att stoppa in en if sats nånstans:

(aspx)
<asp:DataGrid id="dgAllStaff" runat="server" Width="497px" Height="139px" BorderColor="Black" CellPadding="3">
   <HeaderStyle BackColor="#E7E4E4"></HeaderStyle>	
</asp:DataGrid>

(cs)
this.dgAllStaff.ShowHeader = true;
this.dgAllStaff.AutoGenerateColumns = false;
			
/* Creating the columns */
BoundColumn dgColumn = new BoundColumn();

dgColumn.HeaderText = "Efternamn";
dgColumn.DataField = "e_namn";
this.dgAllStaff.Columns.Add(dgColumn);

/*t.ex. if(isPublic()) eller nåt sånt
{
dgColumn = new BoundColumn();

dgColumn.HeaderText = "Förnamn";
dgColumn.DataField = "f_namn";
this.dgAllStaff.Columns.Add(dgColumn);
}*/
HyperLinkColumn...

Jag löste problemet på detta sätt men man kanske kan lösa det på helt annat sätt som är smidigare? (alltså att visa/dölja kolumner baserat på t.ex. nån parameter?)

Om det är nån som har nåt förslag på punkt 2, 3 så är jag desto mer nyfiken...? :) Läste nåt om Literals imorse.. kanske det man kan ha om man bara vill skriva ut en rad nånstans? (har inte provat än).

För punkt 2 så är ju css filens sökväg definierad som vanligt i aspx filen; hur ska jag kommunicera med/påverka den från min .cs fil? Finns väl säkert nåt enkelt sätt..? :)

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