renholmMedlem sedan apr. 20012 266 inlägg 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?
renholmMedlem sedan apr. 20012 266 inlägg 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.
asmodieMedlem sedan jan. 2004501 inlägg 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.
renholmMedlem sedan apr. 20012 266 inlägg 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 :)
asmodieMedlem sedan jan. 2004501 inlägg vad exakt är guid? Lite små noob på vissa grejer...
renholmMedlem sedan apr. 20012 266 inlägg En 32-bitar stor unik "nyckel", bra att ha om man har många olika objekt som ska identifieras.
renholmMedlem sedan apr. 20012 266 inlägg Menar du hur jag generera dem? Finns flera olika sätt, t.ex. Guid.NewGuid() eller NEWID() i SQL Server.
asmodieMedlem sedan jan. 2004501 inlägg 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?
renholmMedlem sedan apr. 20012 266 inlägg 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.
asmodieMedlem sedan jan. 2004501 inlägg Varför lägger du inte skapandet av Guid i samband med databindningen?
asmodieMedlem sedan jan. 2004501 inlägg Eller skapar databidningen i page load?
asmodieMedlem sedan jan. 2004501 inlägg 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))
}
NöffMedlem sedan nov. 2003569 inlägg En fråga bara, vad är panel för nåt och hur använder man den?.
renholmMedlem sedan apr. 20012 266 inlägg 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
NöffMedlem sedan nov. 2003569 inlägg Hmm, kikade lite på panel, intressant control, men kan den ha Child control:er? . Ifall den kan det ska jag nog byta min repeater.
NETworkMedlem sedan juni 20011 732 inlägg 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.