2013-08-16 3 views
0

PFB Silverlight 앱의 DataGrid 코드입니다. 다른 열 값 DatatypeName을 기반으로 각 행의 AttributeValue 열을 확인해야합니다. 예를 들어 특정 DatatypeNamecolumn 값 행은 사용자가 검증 exception.Please 도움을 던져해야 셀 INT 이외의 다른 입력하면 만 INT 사용자를 허용해야합니다 같은 행에서의 AttributeValue 열 int이며silverlight의 DataGrid에서 다른 셀 값을 기준으로 셀의 유효성을 검사하십시오.

<sdk:DataGrid Margin="0,0,0,50" Grid.Row="1" Grid.Column="0" RowStyle="{StaticResource DataGridRowStyle1}" Style="{StaticResource DataGridStyle1}" IsReadOnly="True" Foreground="{StaticResource GrayBrush}" HorizontalScrollBarVisibility="Hidden" Name="dgKpiAttributes" MinHeight="5" VerticalAlignment="Stretch" FontSize="13.333" FontFamily="Segoe UI" AutoGenerateColumns="False" GridLinesVisibility="None" > 
                <sdk:DataGrid.Columns> 
                 <sdk:DataGridTemplateColumn Header=" " > 
                  <sdk:DataGridTemplateColumn.CellTemplate> 
                   <DataTemplate> 
                    <CheckBox x:Name="chkSelect" 
             VerticalAlignment="Center" IsChecked="False" HorizontalAlignment="Center" HorizontalContentAlignment="Center"/> 


                   </DataTemplate> 
                  </sdk:DataGridTemplateColumn.CellTemplate> 
                 </sdk:DataGridTemplateColumn> 
                 <sdk:DataGridTemplateColumn Header="AttributeName" SortMemberPath="AttributeName" Width="50*" > 
                  <sdk:DataGridTemplateColumn.CellTemplate> 
                   <DataTemplate> 
                    <StackPanel VerticalAlignment="Center"> 
                     <TextBlock x:Name="txtAttributeName" TextWrapping="Wrap" Padding="4" Text="{Binding AttributeName}" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
                    </StackPanel> 
                   </DataTemplate> 
                  </sdk:DataGridTemplateColumn.CellTemplate> 
                 </sdk:DataGridTemplateColumn> 
                 <sdk:DataGridTemplateColumn Header="AttributeValue" SortMemberPath="AttributeValue" Width="80*" > 
                  <sdk:DataGridTemplateColumn.CellTemplate> 
                   <DataTemplate> 
                    <StackPanel VerticalAlignment="Center"> 
                     <TextBox x:Name="AttributeValue" Margin="0,0,10,0" HorizontalAlignment="Stretch" Text="{Binding AttributeValue}" TextWrapping="Wrap" /> 
                    </StackPanel> 
                   </DataTemplate> 
                  </sdk:DataGridTemplateColumn.CellTemplate> 
                 </sdk:DataGridTemplateColumn> 
                 <sdk:DataGridTemplateColumn Header="DataType" SortMemberPath="DataTypeName" Width="50*"> 
                  <sdk:DataGridTemplateColumn.CellTemplate> 
                   <DataTemplate> 
                    <StackPanel VerticalAlignment="Center"> 

                     <TextBox x:Name="DatatypeName" HorizontalAlignment="Stretch" TextWrapping="Wrap" IsEnabled="False" Text="{Binding DataTypeName}" /> 
                    </StackPanel> 
                   </DataTemplate> 
                  </sdk:DataGridTemplateColumn.CellTemplate> 
                 </sdk:DataGridTemplateColumn> 
                </sdk:DataGrid.Columns> 

               </sdk:DataGrid> 

답변

0
글쎄, 내가 볼 수있는 코드에서 클래스처럼

이 (내가 잘못하면 나를 수정하십시오) :

class MyClass 
{ 
     public string AttributeName {get;set;} 
     public string AttributeValue {get;set;} 
     public string DatatypeName {get;set;} 
} 

silverligth에서 데이터 릿의 같은 행에있는 다른 셀을 검사하는 방법이 있다고 가정하지만 바인딩을 사용하고 있으므로 데이터 객체에서 직접 작업 할 수 있습니다.

class MyClass 
{ 
     public string AttributeName {get;set;} 

     public string DatatypeName {get;set;} 

     private string _AttributeValue; 
     public string AttributeValue { 
      get{ 
        return _AttributeValue; 
      } 
      set{ 
        if (validate(DatatypeName,value)){ 
        //Do something if validation is a success 
        _AttributeValue = value; 
        } 
        else{ 
        //Do something if validation fails 
        } 
       } 
      } 

     bool validate(string typename,string value){ 
     //do your validation, return true or false 
     return true 
     } 


} 

이렇게하면 데이터 만 UI를 탐색 할 필요가 없습니다.

관련 문제