I min aspx.vb sida binder jag min DataGrid & DataList enligt följande: Du måste göra denna kontroll själv, alltså det finns inget automatiserat sätt att göra det på. Det du kan göra är att manuellt tabort den kolumn du inte vill visa efter du har bundit datan. Du kan även se till att data döljs i eventen som griden använder sig av för att lägga till data. Ett annat sätt är att du själv lägger över den data som få visas i ett eget objekt som du lägger i en arraylist som du sedan binder. Du skulle även kunna använda dig av DefaultView och sätta ett filter på datasetet för att dölja data. Grejenär det att resultatet kan vara 20 radera länkar och ex 10 av dom ska visas då jag ev har rättighet till dom medans övriga ska döljas. Jag hämtar upp datat på följande vis: Du kan ju redan vid hämtandet av data kolla om du har en viss rättighet. Genom att i din db fråga. Om inte för att du vil sköta detta i ett annat laget så har du event som du kan använda dig av, ex OnItemBound eventet. Här kollar du datans värde och tar bort raden om den inte är ok. Du kan även gå genom ditt DataSet innan du binder det och där se till så datan inte publiceras. (Radera det du inte vill ha.) Ok! Hej, DataGrid & DataList problem
DataGrid1.DataSource = dataSet.Tables("Files").DefaultView
DataGrid1.DataBind()
DataList1.DataSource = dataSet.Tables("Files").DefaultView
DataList1.DataBind()
I aspx sidan ritar jag ut följande:
<asp:DataGrid id="DataGrid1"...
<asp:TemplateColumn HeaderText="Delete" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
Radera
</ItemTemplate>
</asp:datalist>
Det jag vill åstadkomma är att i aspx.vb sidan kontrollera vilken rättighet jag har för respektive post och på så vis visa resp dölja kolumnen för användaren.
I gamla asp så loopade man ju varje post och kunde på så vis göra en ny fråga och kontrollera rättigheterna för varje varv i loopen men nu har man ju endast
DataGrid1.DataSource = dataSet.Tables("Files").DefaultView
DataGrid1.DataBind()
Hur ska jag kunna komma åt varje post för sig i aspx.vb sidan?
Hopps någon förstår hur jag menar!Sv: DataGrid & DataList problem
/Fredrik Normén NSQUARED2
http://www.nsquared2.netSv: DataGrid & DataList problem
Jag kan med andra ord inte använda ex
DataGrid1.Columns(4).Visible = False då den döljer alla länkar.
Kan i och för sig loopa igenom hela recordsetet och ta bort det data jag ej har rättighet att se och sen föra in resultatet till min datalist och datagrid.
Men det känns otroligt dumt att behöva loopa allting en gång i onödan då det kan röra sig om väldigt många poster.
Men det kanske tyvärr är så att man inte kan lösa detta på ett bra sätt?Sv: DataGrid & DataList problem
Dim dataAdapter As New SqlDataAdapter(sSql, myConnection)
Dim dataSet As New DataSet
dataAdapter.Fill(dataSet)
lblRecordCount.Text = CStr(dataSet.Tables(0).Rows.Count)
dataSet = Nothing
dataSet = New DataSet
dataAdapter.Fill(dataSet, CInt(lblCurrentIndex.Text), CInt(lblPageSize.Text), "Files")
DataList1.DataSource = dataSet.Tables("Files").DefaultView
DataList1.DataBind()Sv: DataGrid & DataList problem
JNSv: DataGrid & DataList problem
OnItemBound eventet låter intressant.
Kan man använda OnItemBound eventet för att dölja ex en knapp?
EX:
Om min fråga mot SQL levererar tio poster så vill jag att alla tio poster ska listas i DataListen eller DataGriden (Beroende av sidlayout).
Var och en av dessa tio poster har i sin tur ett antal knappar (download, delete ...)
Beroende av vilken rättighet jag har på respektive post så vill jag dölja eller visa knapparna.
Ett sätt är att ta ut rättigheterna redan i SQL frågan. Men hur gör man då i aspx sidan?
<asp:TemplateColumn...
<ItemTemplate>
</ItemTemplate>
</asp:TemplateColumn>
Hade velat skriva
If Container.DataItem("Perm") = 0 Then
Visa TemplateColumn ovan
End If
Men jag kan inte använda Container.DataItem("Perm") i en If sats utan bara mellan
<%# taggen %>
Finns det någon möjlighet att lösa det på ett liknande sätt som ovan?Sv: DataGrid & DataList problem
Du kan lösa det med hjälp av OnItemBound.
Det enda du behhöver göra är att hitta din knapp och sätta den till Invisable.
Mvh JN