0

私はWPFアプリケーションに取り組んでいます。

この画像を確認してください:

スクリーンショット

+記号ボタンをクリックすると、添付ファイルのパスを下のグリッドに表示したいと思います。このために、以下に示すいくつかの作業を行いました。

XAML ファイル

<StackPanel>
    <StackPanel Orientation="Horizontal">
        <Appctr:GridToolBar x:Name="attachmentTool" Grid.Row="0" RemoveRowClick="attachmentTool_RemoveRowClick" AddRowClick="attachmentTool_AddRowClick" MoveUpClick="attachmentTool_MoveUpClick" MoveDownClick="attachmentTool_MoveDownClick" ToolBtn_Search="ButtonEditSettings_attachmentUsedClick" Height="25" />
    </StackPanel>
    <dxg:GridControl x:Name="dxgAttachment" Height="200" AutoPopulateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
        <dxg:GridControl.View>
            <dxg:TableView x:Name="vwAttachment" ShowGroupPanel="False" AllowBestFit="True" AutoWidth="True">
            </dxg:TableView>
        </dxg:GridControl.View>
        <dxg:GridControl.Columns>
            <!--<dxg:GridColumn FieldName="SlNo" Header="Sl #"></dxg:GridColumn>-->
            <dxg:GridColumn FieldName="LocalPath" Header="Attachment Path" Width="Auto" ReadOnly="True" EditSettings="{dxe:TextSettings TextWrapping=Wrap}"></dxg:GridColumn>
            <!--<dxg:GridColumn FieldName="LocalPath" Header="Attachment Path" Width="1130" ReadOnly="True" EditSettings="{dxe:TextSettings TextWrapping=Wrap}"></dxg:GridColumn>-->
        </dxg:GridControl.Columns>
    </dxg:GridControl>
</StackPanel>

.CS ファイル

private void attachmentTool_AddRowClick(object sender, RoutedEventArgs e)
{
    Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();

    // Set filter for file extension and default file extension
    //dlg.DefaultExt = ".txt";
    //dlg.Filter = "Text documents (.txt)|*.txt";

    // Display OpenFileDialog by calling ShowDialog method
    Nullable<bool> result = dlg.ShowDialog();

    // Get the selected file name and display in a TextBox
    if (result == true)
    {
        try
        {
            // Open document
            string filePath = dlg.FileName;
            AttachmentInfo info = new AttachmentInfo();
            info.LocalPath = filePath;
            info.FileName = System.IO.Path.GetFileNameWithoutExtension(filePath);
            info.FileExtension = System.IO.Path.GetExtension(filePath).Replace(".", "");
            Stream strm = dlg.OpenFile();
            byte[] data = new byte[strm.Length];
            strm.Read(data, 0, data.Length);
            info.AttachmentContent = data;
            strm.Close();
            strm.Dispose();
            this.dxgAttachment.ItemsSource = info;

        }
        catch (Exception ex)
        {
            DXMessageBox.Show("Unable to attach file. " + ex.Message);
        }
    }
}

問題

  1. 添付ファイルのパスをグリッドに表示するにはどうすればよいですか?

  2. 単一または複数のファイルを添付した後、すべてのファイルもデータベースに保存したいと考えています。これを行う方法?

上記のコードを使用すると、添付ファイルのリストをグリッドに表示できません。

4

1 に答える 1

0

使用しているDataGridの種類はわかりませんが、ItemsSourceは、単一のアイテムではなく、おそらくIEnumerable(アイテムのコレクション)である必要があります。

これを試して:

this.dxgAttachment.ItemsSource = new List<AttachmentInfo>() { info };
于 2012-12-19T23:49:10.917 に答える