2008-09-16 7 views
5

Ich verwende ein .NET Windows Forms DataGridView und ich muss eine DataBound-Spalte bearbeiten (die in einer booleschen DataTable-Spalte bindet). Dazu gebe ich die Zellenvorlage wie folgt an:DataGridView-Spalte des Typs DataGridViewCheckBoxCell wird ständig readonly/deaktiviert

DataGridViewColumn spalte = new DataGridViewColumn (new DataGridViewCheckBoxCell());

Sie sehen, dass ich eine CheckBox Zelle Vorlage brauche.

Das Problem, dem ich gegenüberstehe, ist, dass diese Spalte ständig readonly/disabled ist, als ob sie vom Typ TextBox wäre. Es wird kein Kontrollkästchen angezeigt.

Haben Sie sich Gedanken darüber gemacht, wie Sie mit editierbaren Checkbox-Spalten für DataGridView arbeiten können?

Update: Für Windows-Formulare, bitte.

Danke.

Antwort

0

erstellen Template und banden die ID, um es, so etwas wie dieses:

<asp:TemplateField HeaderText="Whatever" SortExpression="fieldname" ItemStyle-HorizontalAlign="Center"> 
    <ItemTemplate> 
     <asp:CheckBox runat="server" ID="rowCheck" key='<%# Eval("id") %>' /> 
    </ItemTemplate> 
</asp:TemplateField> 
+0

habe ich vergessen, dass ich für Windows Forms benötigen die Antwort angeben. Vielen Dank. –

+0

Entschuldigung, ich habe diesen Punkt verpasst. – Biri

1

Anstatt zu versuchen, die Spalte in Code, klicken Sie auf den kleinen Pfeil in einem Feld oben rechts neben der Datagridview zu erstellen Wählen Sie "Bearbeiten" aus dem angezeigten Menü. Klicken Sie im Dialogfeld auf die Schaltfläche Hinzufügen, wählen Sie die Option "Datengebundene Spalte" und wählen Sie die boolesche Spalte aus, an die Sie binden möchten.

+0

Ja, das wäre vielleicht eine Lösung gewesen, aber in meinem Fall wurden die Spalten programmatisch hinzugefügt. –

6

Nun, nach mehr als 4 Stunden Debugging, habe ich festgestellt, dass die DataGridView Zeilenhöhe zu klein für das Kontrollkästchen war, so dass es überhaupt nicht angezeigt wurde. Ich habe dies nach einer zufälligen Zeilengröße gefunden.

Als Lösung können Sie den AutoSizeRowsMode auf AllCells setzen.

richDataGrid.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;

+0

bitte markieren Sie Ihre Antwort als akzeptiert. – JPReddy

Verwandte Themen