Buonasera a tutti, ho un problema con delle checkbox. Nel code behind di una pagina (metodo Page_Load) mi prendo dei valori dal db e a seconda che siano true o false metto i segni di spunta o meno sulle relative checkbox, e fin qui tutto ok. Lo scopo della pagina è quello di mostrare questi valori e permettere di modificarli e di fare l'update del db. Il problema è qui: se ho dei checkbox che non sono spuntati, li spunto e salvo, l'update avviene correttamente. Se i checkbox sono spuntati, tolgo il check e salvo questi rimangono a true. Come mai? Posto il codice della pagina se può essere utile.
Grazie!
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Modifica.aspx.cs" Inherits="WebApplication1.Utenti.Modifica" MasterPageFile="~/Site.Master" Title="Modifica Permessi" %>
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
ModifyRole(can_read.Checked,
can_write.Checked,
can_update.Checked,
can_updateall.Checked,
can_delete.Checked,
can_deleteall.Checked);
messaggio.InnerHtml = "Permessi modificati correttamente!";
}
private void ModifyRole(bool canr, bool canw, bool canu, bool canua, bool cand, bool canda)
{
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(GetConnectionString());
string sql = "UPDATE Ute_Proc SET can_read = @canr, can_write = @canw, can_update = @canu, can_update_all = @canua, can_delete = @cand, can_delete_all = @canda WHERE id_utente = @idu AND id_procedura = @idp";
try
{
conn.Open();
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, conn);
System.Data.SqlClient.SqlParameter[] param = new System.Data.SqlClient.SqlParameter<img src="/forum/skins/default/images/emo/png-blue/icon_smile_8ball.png" class="absmiddle emoticon" />;
param[0] = new System.Data.SqlClient.SqlParameter("@idu", System.Data.SqlDbType.Int);
param[1] = new System.Data.SqlClient.SqlParameter("@idp", System.Data.SqlDbType.Int);
param[2] = new System.Data.SqlClient.SqlParameter("@canr", System.Data.SqlDbType.Int);
param[3] = new System.Data.SqlClient.SqlParameter("@canw", System.Data.SqlDbType.Int);
param[4] = new System.Data.SqlClient.SqlParameter("@canu", System.Data.SqlDbType.Int);
param[5] = new System.Data.SqlClient.SqlParameter("@canua", System.Data.SqlDbType.Int);
param[6] = new System.Data.SqlClient.SqlParameter("@cand", System.Data.SqlDbType.Int);
param[7] = new System.Data.SqlClient.SqlParameter("@canda", System.Data.SqlDbType.Int);
param[0].Value = Request.QueryString["id_ut"];
param[1].Value = Request.QueryString["id_pr"];
param[2].Value = canr;
param[3].Value = canw;
param[4].Value = canu;
param[5].Value = canua;
param[6].Value = cand;
param[7].Value = canda;
for (int i = 0; i < param.Length; i++)
{
cmd.Parameters.Add(param[i]);
}
cmd.CommandType = System.Data.CommandType.Text;
cmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Insert Error:";
msg += ex.Message;
throw new Exception(msg);
}
finally
{
conn.Close();
HtmlMeta meta = new HtmlMeta();
meta.HttpEquiv = "Refresh";
meta.Content = "2; URL=Utenti.aspx";
Page.Header.Controls.Add(meta);
}
}
public string GetConnectionString()
{
return ConfigurationManager.ConnectionStrings["IntranetConnectionString"].ConnectionString;
}
</script>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<style type="text/css">
.style1
{
text-align: center;
}
.style2
{
width: 10%;
}
</style>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<div id="contenitore" runat="server">
<p>
<asp:Label runat="server">Nome utente:</asp:Label>
<asp:Literal ID="utente" runat="server"></asp:Literal>
</p>
<p>
<asp:Label runat="server">Procedura:</asp:Label>
<asp:Literal ID="procedura" runat="server"></asp:Literal>
</p>
</div>
<table>
<thead>
<tr>
<th class="style2">Read</th>
<th class="style2">Write</th>
<th class="style2">Update</th>
<th class="style2">Update All</th>
<th class="style2">Delete</th>
<th class="style2">Delete All</th>
</tr>
</thead>
<tbody>
<tr>
<td class="style1"><asp:CheckBox runat="server" ID="can_read" /></td>
<td class="style1"><asp:CheckBox runat="server" ID="can_write" /></td>
<td class="style1"><asp:CheckBox runat="server" ID="can_update" /></td>
<td class="style1"><asp:CheckBox runat="server" ID="can_updateall" /></td>
<td class="style1"><asp:CheckBox runat="server" ID="can_delete" /></td>
<td class="style1"><asp:CheckBox runat="server" ID="can_deleteall" /></td>
</tr>
</tbody>
</table>
<asp:Button ID="Button1" runat="server" Text="Salva" onclick="Button1_Click" />
<div id="messaggio" runat="server" enableviewstate="false" style="color:#00FF00; font-weight:bold; text-align:center;"></div>
</asp:Content>