Gå til innhold

Anbefalte innlegg

Jeg har skrevet et etter mitt syn ganske bra nested gridview i klassisk asp, hvor jeg bygger opp tabellen dynamisk, og skjuler/viser "nested raden" og sorterer tabellen med jQuery.

 

Nå ønsker jeg å skrive det om til .NET.

 

Hvordan kan jeg på en lettest mulig måte kode det om?

 

Jeg bygger opp tabellen slik:

 

<thead>
   <tr>
<th class="expandCol"> </th>
<%	
	for each field in sortedFields
	if field <> "" then
	Response.write("<th>" & field & "     </th>")
	response.write(field)
	end if
	next	
		  %>
   </tr>
</thead>
<tbody>
   'bygges opp på samme måte som header
</tbody>

 

 

Jeg skjuler/viser og sorterer slik:

$(function() {
$(".inner tr:odd").addClass("inner_odd");
$(".inner tr:even").addClass("inner_even");		
$("#tabell tr.inner").hide();

$("#tabell").tablesorter({
	headers: {
		0: {
			sorter: false
		}
	}
});

$("td p").click(function(){
	var show = $(this).parent().parent().parent().next().css('display');
	//alert(show);

	if(show != 'none'){
		//alert('visible');
		$(this).parent().parent().parent().next().hide();
		$(this).text("+");
	}
	else {
		//alert('hidden');
		$(this).parent().parent().parent().next().show();
		$(this).text("-");
		$(this).parent().parent().parent().next().removeClass();
		$(this).parent().parent().parent().next().addClass("inner");
	}
});
});

 

 

Jeg vet jeg kan bruke GridView kontrollen i .NET, og har også laget en variant med GridView, men jeg følte ikke at jeg fikk god nok kontroll på det indre gridet.

 

Mvh

 

Francis

Lenke til kommentar
Videoannonse
Annonse

Jeg har kommet et godt stykke på vei med en .NET variant, hvor jeg faktisk bruker GridView som basis.

 

Hittil har jeg kun fått det til med VB .NET, men ønsker å skrive det i C#.

 

jeg har en SqlDataSource (til NorthWind for testing):

 

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:connString %>"
			   SelectCommand="SELECT [CustomerID], [CompanyName], [ContactName], [Address], [City], [PostalCode], [Phone] FROM [Customers]">
		   </asp:SqlDataSource>

 

Jeg bruker dette for å linke det yttre gridet til det innre:

 

Protected Sub gv_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
	.....
		dbSrc.SelectCommand = "SELECT * FROM Orders WHERE CustomerID = '" & _
			e.Row.DataItem("CustomerID").ToString & "' ORDER BY OrderDate"
	.....
End Sub

 

Problemet er uthenting av "CustomerID i C#.

 

Dette kompilerer ikke, da DataItem ikke ser ut til å støtte indeksering i C#.

protected void gv_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
	dbSrc.SelectCommand = "SELECT * FROM Orders WHERE CustomerID = '" + e.Row.DataItem["CustomerID"].ToString() + "' ORDER BY OrderDate";
}

 

 

Dette er det nærmeste jeg har kommet, men da må CustomerID være synlig, og det er litt dumt, da det er helt irrelevant for brukeren hvilken databaseindex en kunde har.

protected void gv_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
	dbSrc.SelectCommand = "SELECT * FROM Orders WHERE CustomerID = '" + e.Row.Cells[1].Text + "' ORDER BY OrderDate";

}

 

Jeg vet jeg kunne brukt et ObjectDataSource med en DataTable, og hentet verdiene derfra, men jeg vil gjerne få det til slik i første omgang :).

 

Setter stor pris på all hjelp :).

 

Mvh

 

Francis

Endret av :Francis:
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...