2016-12-16 34 views
0

我有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> 

我想「xrbtNone」如果其他兩個是假的進行檢查,但由於我沒有將'xrbtNone'保存到數據庫,當我重新打開未選中的界面時。

如何將其設置爲檢查其他兩個是否未選中?

我試圖創建一個屬性,但它沒有工作,這是我爲我的單選按鈕當前的代碼

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(); 
     } 
    }  

回答

0

我最終通過設置我的財產像這樣固定的:

如此以來,我的「器isChecked」屬性設置爲綁定,這個條件語句將布爾的值,並返回屬性允許按鈕函數通常不需要我在數據庫中添加一個字段。

private static readonly PropertyInfo _NoneProperty = RegisterProperty(p => p.None,「None」);

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

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

我不知道我完全undertstood你想要做什麼,但你想要的電臺如果其他2個按鈕未被選中,按鈕「xrbtNone」將被檢查?

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

這應該有效。

簡短說明:

如果2個單選按鈕(你需要更改名稱)未被選中,it'l的 「xrbtNone」 按鈕。不難理解。希望這可以幫助你:)

+0

由於我的單選按鈕是在網格中,我無法檢查特定的按鈕是否被選中或檢查特定的按鈕,如果它不在網格中,這將工作。 – RickS

+0

啊,gridview。錯過了。那麼,不知道這樣做。 –

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

其次,你可以指定從一開始就檢查xrbtNone,包括「xrbtNone.Checked = true;」在你的實例代碼中。這將觸發Checked事件,但是如果您不希望觸發該事件,則可以通過在檢查它之前停用單選按鈕並在之後重新激活它們來阻止該事件。

+0

我無法將其設置爲GroupName,因爲在GridView中,如果將其設置爲GroupName並且存在多行,那麼它將取消選擇所有其他行中的所有其他按鈕。但生病嘗試看看是否將其設置爲默認真實將有所幫助。 – RickS

+0

您應該可以爲不同的按鈕組設置不同的GroupNames。所以,你可能有LanguageGroup,TimeZoneGroup,EthnicityGroup等。如果你這樣做,那麼我認爲對LanguageGroup按鈕的更改不會影響任何其他按鈕組。希望這不會強制你創建許多你不想分組的按鈕組。 – user3685427

+0

問題是,當我添加一個新的行到網格視圖,我選擇了三個按鈕中的一個,第一行中的按鈕由於它們被分組而被取消選中,所以我唯一可以控制它們的方式是通過綁定。 – RickS

相關問題