0

我有一个应用程序,允许用户加载由数据点组成的多个文本文件。加载这些文件后,会为每个文件生成一个启用了复选框的节点。然后选择的每个文件都成为“DynoFile”类的一个实例,所有这些都存储在列表中。有没有办法可以将节点的复选框绑定到它的“DynoFile”类的特定实例(节点和 DynoFile 类的实例共享相同的名称)?我以前的方法是遍历所有复选框,并将选中的名称与我列表中的 DynoFile 实例的名称进行比较。我觉得必须有一种方法可以让复选框事件更改相应 DynoFile 类中的参数。

到目前为止,以下是我的代码。

  List<DynoFile> AllRuns = new List<DynoFile>();
    private void button1_Click(object sender, EventArgs e)
    {
        TreeNode RunGroup = new TreeNode();
        RunGroup.Text = GroupName.Text;
        RunGroup.Name = GroupName.Text;
        treeView1.Nodes.Add(RunGroup);

        OpenFileDialog dlg = new OpenFileDialog();
        dlg.Filter = "Text files (*.txt)|*.txt";
        dlg.FilterIndex = 0;
        dlg.Multiselect = true;
        dlg.RestoreDirectory = true;
        dlg.Title = "Read .txt Log File";
        if (dlg.ShowDialog() == DialogResult.OK)
        {
            BuildTree(RunGroup,dlg.FileNames);
            BuildRuns(GroupName.Text, dlg.FileNames);
        }
    } // Load the File names into an array

    public void BuildTree(TreeNode RunGroup, String[] FileNames)
    {
        foreach (String file in FileNames)
        {
            TreeNode run = new TreeNode();
            run.Name = Path.GetFileName(file);
            run.Text = Path.GetFileName(file);
            RunGroup.Nodes.Add(run);
        }
    } // Parse the array and construct the tree of nodes

    public void BuildRuns(String GroupName, String[] FileNames)
    {
        foreach (String file in FileNames)
        {
            DynoFile element = new DynoFile(Path.GetFileName(file), GroupName);
            AllRuns.Add(element);
        }

    }
4

2 回答 2

0

您可以使用复选框上的“OnDataBinding”方法执行类似的操作。创建复选框时,请提供一个唯一 ID,以便识别它们以了解您要引用的节点/DynoFile(如节点位置的 ID)。如果您给我实际比较名称的代码,我可以为您提供更多帮助

于 2013-06-06T17:34:55.420 回答
0

首先,我将在页面中使用中继器来显示复选框,请参阅此网站: http ://www.sitepoint.com/asp-net-repeater-control/

中继器的源可以是包含节点名称和文件名称的对象列表。

<asp:Repeater ID="catlist" runat="server" DataSourceId="ListOfNodeNameAndFile">
   <ItemTemplate>
      <CheckBox isChecked='<%# Container.NodeName == Container.FileName%>'/>
   </ItemTemplate>
</asp:Repeater>

让我知道 !

于 2013-06-06T17:55:49.873 回答