Jan 14
2009

Das GridView Servercontrol von ASP.NET 2.0 bietet eine Vielzahl von Möglichkeiten, Spalten mit Informationen zu versehen. Gelegentlich ist es notwendig, eine Spalte mit einer Checkbox zu versehen, um Zeilen einzeln wählen zu können. Das ist schnell implementiert. Allerdings wird es etwas tricky, wenn nur jeweils eine Checkbox aktiviert sein darf, also vergleichbar mit einer Reihe von RadioButtons.
Mit etwas JavaScript ist dieser UseCase jedoch auch problemlos umsetzbar.

So könnte die Spalte im GridView aussehen, in dem es beispielweise nur einen Hauptansprechpartner geben darf:

Hier die CheckBox Deklaration im GridView: 

<asp:TemplateField HeaderText="Haupt AP">
  <ItemTemplate>
    <asp:CheckBox
      ID="cbxIsMainUser"
      runat="server"
      CssClass="cbxCheckbox" /> 
  </ItemTemplate>
</asp:TemplateField>

Hier das JavaScript im aspx-Code:

<script type="text/javascript" language="javascript">
  function uncheckOthers(id)
  {
    var elm = document.getElementsByTagName('input'); for(var i = 0; i < elm.length; i++)
    {
      if(elm.item(i).id.substring(id.id.lastIndexOf('_')) == id.id.substring(id.id.lastIndexOf('_'))) 
      {
        if( elm.item(i).type == "checkbox" && elm.item(i)!=id)elm.item(i).checked =
false;
      }
    }
  }
</script>

RowDataBound des GridView im Codebehind:

//allow only one checkbox in column to be checked using javascript:
CheckBox cbxIsMainUser = (CheckBox)e.Row.FindControl("cbxIsMainUser");
string strScript = "uncheckOthers(" + cbxIsMainUser.ClientID + ");";
cbxIsMainUser.Attributes.Add("onclick", strScript);

Tags:

Comments

Busby SEO Test

Posted on Wednesday, 21 January 2009 07:50

Dieses Skript ist, dass ich will .. Thank you for sharing ..

Comments are closed