webForumDet fria alternativet

UserControl i DataGrid

.NET

17 svar · 417 visningar · startad av renholm

Medlem sedan apr. 20012 266 inlägg
Frågan#1

Har en DataGrid i vilken jag har infogat en kontroll, denna kontroll skall ta ett värde från ett fält som bundits till datagriden och visa alla relaterade poster.

I denna användarkontrol (UserControl) använder jag mig av en Collection som instansieras i Page_Load och sedan binds mot en DataGrid i kontrollen. Problemet är att den Guid som "skickas" till UserControl:en bara blir Guid.Empty vilket inte är önskvärt.

Själv tror jag att det beror på att propertien sätts vid DataBind eller dyl och försöker hämtas innan dess i Page_Load vilket skapar problem och förklarar varför den alltid är Empty när Collection skall instansieras. Korrekt bedömning? Lämplig åtgärd för att avhjälpa problemet?

Medlem sedan sep. 20011 914 inlägg
#2

Har du lite kod.

Medlem sedan apr. 20012 266 inlägg
#3

Tyckte inte det behövdes men här är lite:

gear.aspx

<uc:permissions id="ucPermissions" runat="server" GUID="<%# ((GearControl)Container.DataItem).ID %>"></uc:permissions>

permissions.ascx.cs

private Security.Permissions permissions;

public Guid GUID
{
	get { return guid; }
	set { guid = value; }
}
private void Page_Load(object sender, ystem.EventArgs e)
{
	permissions = new Security.Permissions(GUID); // här blir felet, eftersom Permission inte accpterar Guid.Empty.
	if (!Page.IsPostBack)
		Bind();
}

private void Bind()
{
	dlPermissions.DataSource = permissions;
	dlPermissions.DataBind();
}

Lösningen torde då vara att placera instansieringen vid något annat tillfälle.

Medlem sedan jan. 2004501 inlägg
#4

Hmz...asså om jag förstår detta rätt vilket jag antagligen inte har gjort.

Några förslag på vad som kan vara fel:
Security.Permissions(GUID); ska nog vara Security.Permissions(guid); Och sedan saknar jag guid declarationen...
typ:
private int[] guid;

Bara några tankar.

Medlem sedan apr. 20012 266 inlägg
#5

Tack för svaret men inget av de förslagna lösningarna är till hjälp då GUID och guid i princip blir samma sak, har i alla fall testat med båda. Att deklarationen av guid inte finns med beror på att jag slarvat med inlägget :)

Medlem sedan jan. 2004501 inlägg
#6

vad exakt är guid? Lite små noob på vissa grejer...

Medlem sedan apr. 20012 266 inlägg
#7

En 32-bitar stor unik "nyckel", bra att ha om man har många olika objekt som ska identifieras.

Medlem sedan jan. 2004501 inlägg
#8

vart får du guit från?

Medlem sedan apr. 20012 266 inlägg
#9

Menar du hur jag generera dem? Finns flera olika sätt, t.ex. Guid.NewGuid() eller NEWID() i SQL Server.

Medlem sedan jan. 2004501 inlägg
#10

Nej jag menar inte så...det låter som på dig att du läser den från en databas eller liknande? Eller genererar du den programmatiskt? Och vet du att GUID inte är tomt?

Medlem sedan apr. 20012 266 inlägg
#11

Ja, det kan jag garantera, problemet är att Page_Load körs innan databindningen sker, därför har inte GUID fått något värde eftersom den får sitt värde i och med Databindningen för DataGriden. Det är i alla fall min teori.

Medlem sedan jan. 2004501 inlägg
#12

Varför lägger du inte skapandet av Guid i samband med databindningen?

Medlem sedan jan. 2004501 inlägg
#13

Eller skapar databidningen i page load?

Medlem sedan jan. 2004501 inlägg
#14

Lite nattlig flum kod, tror jag inte fattat problemet riktigt. Här kommer en blanding av kod och pseudokod...

Ex.

public dataGrid minFunktion(Guid minGuid)
{
DataTable dt = skapaData(minGUID)

för varje rad i dt
DataTable dt2 = skapaData(dt.cellenSomSkaLäsasIfrån)
dt.Merge(dt2) sätt ihop dem. eller länka ihopdem hur du nu vill ha dem.

minDataGrid.DataSource = dt
minDataGrid.Bind();

}

i page loaden
{
Panel.Controls.Add(minFunktion(detGeneradeGUID))
}

Medlem sedan nov. 2003569 inlägg
#15

En fråga bara, vad är panel för nåt och hur använder man den?.

Medlem sedan apr. 20012 266 inlägg
#16

Eftersom alla databinding sker i samband med Page_DataBind kan jag inte styra när GUID propertien sätts då detta görs från DataGriden i Page_DataBind... Alternativet är då att instansiera permissions i Page_DataBind i min kontroll, något jag ska testa nu...

Lite information om Page:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;305141

Medlem sedan nov. 2003569 inlägg
#17

Hmm, kikade lite på panel, intressant control, men kan den ha Child control:er? . Ifall den kan det ska jag nog byta min repeater.

Medlem sedan juni 20011 732 inlägg
#18

En panel är just en behållare för andra kontroller. Suverän om man vill dölja/visa valda delar av sidan mellan olika postbacks. Men att ersätta en repeater med en panel låter lite långt... det är ju två väldigt olika kontroller.

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)