tutto si può fare, dipende da quello che si vuole. :master:
Solo a titolo di esempio ti riporto un esempio del classico "regioni-province" fatto in tutte le salse, compreso ajax.
Utilizzo c# e il GridView per allenamento mio personale, ma non ci dovrebbero essere differenza significative col DataGrid.
codice:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private OleDbConnection con;
protected void Page_Load(object sender, EventArgs e)
{
con = new OleDbConnection(MioModulo.StringaConnessioneTest);
con.Open();
if (!this.IsPostBack)
{
ModuloWeb.DataBind(this.GridView1, con, "SELECT * FROM REGIONI ORDER BY NOME_REGIONE", new string[] { "codice_istat_regione" });
}
}
protected void Page_Unload(object sender, EventArgs e)
{
if (con != null) con.Close();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
System.Data.Common.DbDataRecord dbr = (System.Data.Common.DbDataRecord)e.Row.DataItem;
if(e.Row.RowType == DataControlRowType.DataRow)
{
string codice_istat_regione = dbr["codice_istat_regione"].ToString();
DataTable dt = ModuloWeb.GetDataTable(con, string.Format("select nome_provincia from q_provincie where codice_istat_regione = \"{0}\" ", codice_istat_regione));
StringBuilder sb = new StringBuilder();
sb.Append("<table>");
sb.Append("<tr><td>Province</td></tr>");
sb.Append("<tr><td>");
sb.Append("<ul>");
foreach (DataRow r in dt.Rows)
{
sb.Append("[*]");
sb.Append(r[0].ToString());
sb.Append("");
}
sb.Append("[/list]");
sb.Append("</td></tr></table>");
e.Row.Attributes.Add("onmouseout", "GridView1_onmouseout(this);");
e.Row.Attributes.Add("onmouseover", string.Format("GridView1_onmouseover(this, \"{0}\");", sb.ToString()));
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Pagina senza titolo</title>
<link href="../../../../stili/Styles.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript">
// <!CDATA[
var GridView1_backgroundColor = null;
function GridView1_onmouseout(v)
{
if(GridView1_backgroundColor)
v.style.backgroundColor = GridView1_backgroundColor;
document.getElementById("div1").innerHTML = "";
}
function GridView1_onmouseover(v, h)
{
GridView1_backgroundColor = v.style.backgroundColor;
v.style.backgroundColor = "#FBCCC4";
document.getElementById("div1").innerHTML = h;
}
// ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td valign="top">
<asp:GridView ID="GridView1" runat="server" EnableViewState="false" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowDataBound="GridView1_RowDataBound">
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<EditRowStyle BackColor="#999999" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView>
</td>
<td valign="top">
<div id="div1"></div>
</td>
</tr>
</table>
</form>
</body>
</html>