попробуйте это: -
HTML: -
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class=" bg-warning col-lg-12 col-md-12 col-sm-12 col-xs-2" style="border:solid black;">
<div class="form-group" style="display: block;">
<label class="control-label col-lg-2 col-md-2 col-sm-2 col-xs-2" for="attendance" style="line-height:50px">Attendance:<span class="req"> *</span></label>
</div>
<div class="controls col-lg-1 col-md-1 col-sm-1 col-xs-1">
<label class="checkbox-inline" for="attendanceAllCBs"><input type="checkbox" class="attendanceAll" value="All" id="attendanceAllCBs" name="attendanceAllCBs[]">All</label>
</div>
<div class=" col-lg-9 col-xs-9 col-sm-9">
<div id="top">
<label class="checkbox-inline col-lg-2" for="attendanceOtherCBs"><input type="checkbox" class="attendance2" value="Friday" id="attendanceFriday" name="attendanceOtherCBs[]">Friday</label>
<label class="checkbox-inline col-lg-2" for="attendanceOtherCBs"><input type="checkbox" class="attendance2" value="Saturday" id="attendanceSaturday" name="attendanceOtherCBs[]">Saturday</label>
<label class="checkbox-inline col-lg-2" for="attendanceOtherCBs"><input type="checkbox" class="attendance2" value="Sunday" id="attendanceSunday" name="attendanceOtherCBs[]">Sunday</label>
<label class="checkbox-inline" for="attendanceOtherCBs"><input type="checkbox" class="attendance2" value="DaysOnly" id="attendanceDaysOnly" name="attendanceOtherCBs[]">Days Only</label>
</div>
<div id="bottom">
<label class="checkbox-inline col-lg-2" for="attendanceOtherCBs"><input type="checkbox" class="attendance2" value="FridayNight" id="FridayNight" name="attendanceOtherCBs[]">Friday Night</label>
<label class="checkbox-inline col-lg-2" for="attendanceOtherCBs"><input type="checkbox" class="attendance2" value="SaturdayNight" id="SaturdayNight" name="attendanceOtherCBs[]">Saturday Night</label>
<label class="checkbox-inline col-lg-2" for="attendanceOtherCBs"><input type="checkbox" class="attendance2" value="SundaydayNight" id="SundaydayNight" name="attendanceOtherCBs[]">Sundayday Night</label>
<label class="checkbox-inline" for="attendanceOtherCBs"><input type="checkbox" class="attendance2" value="Other" id="Other" name="attendanceOtherCBs[]">Other</label>
</div>
</div>
</div>
</div>
</div>
jQuery:
alert(4);
var gender = '';
alert(5);
var attendanceAllvar = '';
if ($('#attendanceAllCBs').prop('checked') === true){
alert("5a");
attendanceAllvar = "Y";
}else{
alert("5b");
attendanceAllvar = "N";
}
alert(6);
var attendanceFriday = '';
if($('#attendanceFriday').prop('checked') === true){
attendanceFriday = "Y";
}else{
attendanceFriday = "N";
}
Я продолжил свое исследование и не нашел разумного способа сделать это. Свойство Columns на DataGrid не что-то, против чего я могу связать, на самом деле это только для чтения.
Bryan предположил, что что-то могло бы быть сделано с AutoGenerateColumns, таким образом, я взглянул. Это использует простое отражение .NET для рассмотрения свойств объектов в ItemsSource и генерирует столбец для каждого. Возможно, я мог генерировать тип на лету со свойством для каждого столбца, но это получает путь от дорожки.
Так как эта проблема так легко решена в коде, который я продолжу работать с простым дополнительным методом, который я называю каждый раз, когда контекст данных обновляется с новыми столбцами:
public static void GenerateColumns(this DataGrid dataGrid, IEnumerable<ColumnSchema> columns)
{
dataGrid.Columns.Clear();
int index = 0;
foreach (var column in columns)
{
dataGrid.Columns.Add(new DataGridTextColumn
{
Header = column.Name,
Binding = new Binding(string.Format("[{0}]", index++))
});
}
}
// E.g. myGrid.GenerateColumns(schema);
Вы смогли делать это с AutoGenerateColumns и DataTemplate. Я не положителен, если бы это работало бы без большой работы, необходимо было бы играть вокруг с ним. Честно, если бы у Вас уже есть рабочее решение, я просто еще не внес бы изменение, если нет большая причина. Управление DataGrid становится очень хорошим, но все еще требуется некоторую работу (и я имею большое в запасе обучение сделать) смочь сделать динамические задачи как это легко.
Вы можете создать пользовательский элемент управления с определением сетки и определить «дочерние» элементы управления с различными определениями столбцов в xaml. Родителю требуется свойство зависимости для столбцов и метод загрузки столбцов:
Родитель:
public ObservableCollection<DataGridColumn> gridColumns
{
get
{
return (ObservableCollection<DataGridColumn>)GetValue(ColumnsProperty);
}
set
{
SetValue(ColumnsProperty, value);
}
}
public static readonly DependencyProperty ColumnsProperty =
DependencyProperty.Register("gridColumns",
typeof(ObservableCollection<DataGridColumn>),
typeof(parentControl),
new PropertyMetadata(new ObservableCollection<DataGridColumn>()));
public void LoadGrid()
{
if (gridColumns.Count > 0)
myGrid.Columns.Clear();
foreach (DataGridColumn c in gridColumns)
{
myGrid.Columns.Add(c);
}
}
Дочерний Xaml:
<local:parentControl x:Name="deGrid">
<local:parentControl.gridColumns>
<toolkit:DataGridTextColumn Width="Auto" Header="1" Binding="{Binding Path=.}" />
<toolkit:DataGridTextColumn Width="Auto" Header="2" Binding="{Binding Path=.}" />
</local:parentControl.gridColumns>
</local:parentControl>
И, наконец, сложная часть - найти, где вызвать LoadGrid.
Я борюсь с этим, но кое-что заработало, вызвав после InitalizeComponent
в моем конструкторе окна (childGrid - x: name в window.xaml):
childGrid.deGrid.LoadGrid();