如何在网格中设置单选按钮以“检查”#34;

时间:2016-12-16 20:27:43

标签: c# wpf

我在网格中有3个单选按钮

      <dxg:GridColumn x:Name="xrbtCommodityDescription"
                                                FieldName="CommodityDescription"
                                                Header="Commodity Description"
                                                AllowEditing="True"
                                                HeaderTemplate="{StaticResource bold}"
                                                Width="145" MinWidth="60">
                                    <dxg:GridColumn.CellTemplate>
                                        <DataTemplate>
                                            <RadioButton x:Name="xrbtCommodityDescription" IsChecked="{Binding Path=Value}"  
                                                         Checked="RadioButton_Checked" HorizontalAlignment="Center"/>
                                        </DataTemplate>
                                    </dxg:GridColumn.CellTemplate>
                                </dxg:GridColumn>
                                <dxg:GridColumn x:Name="xrbtCommoditySpanish"
                                                FieldName="CommoditySpanish"
                                                Header="Commodity Description Spanish"
                                                AllowEditing="True"

                                                HeaderTemplate="{StaticResource bold}"
                                                Width="190" MinWidth="60">
                                    <dxg:GridColumn.CellTemplate>
                                        <DataTemplate>
                                            <RadioButton x:Name="xrbtCommoditySpanish" IsChecked="{Binding Path=Value}" 
                                                         Checked="RadioButton_Checked" HorizontalAlignment="Center"/>
                                        </DataTemplate>
                                    </dxg:GridColumn.CellTemplate>
                                </dxg:GridColumn>
                                <dxg:GridColumn x:Name="xrbtNone"    
                                                FieldName="None"
                                                Header="Item Description"
                                                AllowEditing="True"
                                                HeaderTemplate="{StaticResource bold}"
                                                Width="105" MinWidth="40">
                                    <dxg:GridColumn.CellTemplate>
                                        <DataTemplate>
                                            <RadioButton x:Name="xrbtNone" IsChecked="{Binding Path=Value}" 
                                                         Checked="RadioButton_Checked" HorizontalAlignment="Center"/>
                                        </DataTemplate>
                                    </dxg:GridColumn.CellTemplate>
                                </dxg:GridColumn>

我想要&#39; xrbtNone&#39;要检查其他两个是否是假的,但因为我没有&#39; xrbtNone&#39;保存到数据库,当我重新打开界面时,它未被选中。

如果未选中其他两个,我怎样才能将其设置为检查?

我尝试创建一个属性,但它没有用,这是我目前的无线电按钮代码

  private void RadioButton_Checked(object sender, RoutedEventArgs e)
    {
        try
        {

            var selectedItem = xgrdCustFLDocType.SelectedItem as CustomerFLDocType;
            RadioButton RBT = sender as RadioButton;

            if ((Boolean)RBT.IsChecked && RBT.Name == "xrbtCommodityDescription")
            {
                selectedItem.CommodityDescription = true;
                selectedItem.CommoditySpanish = false;
                selectedItem.None = false;                  
            }

            if ((Boolean)RBT.IsChecked && RBT.Name == "xrbtCommoditySpanish")
            {
                selectedItem.CommoditySpanish = true;
                selectedItem.CommodityDescription = false;
                selectedItem.None = false;                    
            }

            if ((Boolean)RBT.IsChecked && RBT.Name == "xrbtNone")
            {
                selectedItem.CommoditySpanish = false;
                selectedItem.CommodityDescription = false;
                selectedItem.None = true;                
            }
        }
        catch (Exception ex)
        {
            ITTaskList.ErrorHandler("Unable To Select Radio Button.", ex, this.Name);
        }
        finally
        {                
            EnableButtons();
        }
    }       

3 个答案:

答案 0 :(得分:0)

我不确定我是否完全按照您的意愿行事,但如果未检查其他2个按钮,您是否希望检查单选按钮“xrbtNone”?

private void CheckButtonIfUnchecked()
{
   if (radioButton1.Checked = false && radioButton2.Checked = false)
   {
      xrbtNone.PerformClick();
   }
}

这应该有用。

简短说明:

如果未选中2个单选按钮(您需要更改名称),则为“xrbtNone”按钮。不难理解。希望这有助于你:)

答案 1 :(得分:0)

解决方案分为两部分。首先,您要为所有单选按钮提供GroupName属性,如https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.radiobutton.groupname%28v=vs.110%29.aspx

中所述

语法应该是这样的:

<RadioButton x:Name="xrbtCommoditySpanish" IsChecked="{Binding Path=Value}" 
Checked="RadioButton_Checked" Groupname="LanguageRadioButtons" 
HorizontalAlignment="Center"/>

这将确保只能检查其中一个按钮,无论gridview如何,它都应该有效。如果没有,请查看教程的第3步https://www.asp.net/web-forms/overview/data-access/enhancing-the-gridview/adding-a-gridview-column-of-radio-buttons-cs

其次,您可以通过包含&#34; xrbtNone.Checked = true;&#34;来指定从一开始就检查xrbtNone。在您的实例化代码中。这将触发Checked事件,但您可以通过在检查之前取消激活单选按钮并在之后重新激活它们来防止这种情况,如果您不想触发该事件。

答案 2 :(得分:0)

我最后通过设置我的财产来解决这个问题:

所以,因为我的&#39;缺血&#39;属性设置为绑定,此条件语句将bool设置为一个值,并返回允许按钮正常运行的属性,而不必在数据库中添加字段。

private static readonly PropertyInfo _NoneProperty = RegisterProperty(p =&gt; p.None,&#34; None&#34;);

    public System.Boolean None
    {
        get
        {
            if (!CommodityDescription && !CommoditySpanish)
            {
                None= true;
            } 

            else
            {
                None= false;
            }
            return GetProperty(_NoneProperty); 
        }
        set
        {
            SetProperty(_NoneProperty, value);
        }
    }