Jump to content

Set "More Option" for "Modify Excel Link" (.NET)


avi612

Recommended Posts

Hi.

I'm trying to modify option of Datalink in Autocad using .NET

How to adjust as shown in the picture.

 

MoreOption.png

 

This is my code:

private void btn_Data_Click(object sender, EventArgs e)
       {
           ArrayList _lst = new ArrayList();
           for (int k = 0; k < cbb_ExcelFile.Items.Count; k++)
           {
               _lst.Add(cbb_ExcelFile.Items[k]);
           }
           if (dgv_ERange.RowCount != 0)
           {
               for (int i = 0; i < dgv_ERange.RowCount; i++)
               {
                   if (dgv_ERange.Rows[i].Cells[0].Value != null && Boolean.Parse(dgv_ERange.Rows[i].Cells[0].Value.ToString()))
                   {
                       string _namelink = dgv_ERange.Rows[i].Cells[1].Value.ToString();
                       string _file = dgv_ERange.Rows[i].Cells[4].Value.ToString();
                       string _sheet = dgv_ERange.Rows[i].Cells[2].Value.ToString();
                       string _range = dgv_ERange.Rows[i].Cells[5].Value.ToString();

                       // Tạo Datalink
                       Data_Pro.Create_Datalink(_namelink, _file, _sheet, _range);

                       // Add thêm tên file nếu chưa có.
                       string _namefile = Path.GetFileNameWithoutExtension(_file);
                       if (!_lst.Contains(_namefile))
                       {
                           cbb_ExcelFile.Items.Add(_namefile);
                           _lst.Add(_namefile);
                       }

                   }
               }
               //Load lại dữ liệu Datalink
               for (int i = 0; i < cbb_ExcelFile.Items.Count; i++)
               {
                   cbb_ExcelFile.SelectedIndex = i;
               }
           }
           else
               MessageBox.Show("- Chưa xác định file Excel!", "Thông Báo!!!", MessageBoxButtons.OK, MessageBoxIcon.Warning);

           
       }

Link to comment
Share on other sites

Apologize for the omission. This is code for line:

// Tạo Datalink

Data_Pro.Create_Datalink(_namelink, _file, _sheet, _range);

 

public static DataLink Create_Datalink(string _namelink, string _file, string _sheet, string _range)
       {
           acad.Document doc = acad.Application.DocumentManager.MdiActiveDocument;
           Database db = doc.Database;

           // Tạo mới đối tượng liên kết DataLink
           DataLink _data = new DataLink();

           using (acad.DocumentLock acLck = doc.LockDocument())
           {
               // Kiểm tra tên liên kết. Nếu đã tồn tại thực hiện xóa liên kết cũ:
               // Lấy ra tất cả liên kết có trên dữ liệu
               DataLinkManager mgr = db.DataLinkManager;
               // Lấy ObjectId của đối tượng liên kết DataLink theo tên
               ObjectId _id = mgr.GetDataLink(_namelink);
               // Kiểm tra giá trị nhận được
               if (_id != ObjectId.Null)
               {
                   // Nếu khác null có nghĩa đã có liên kết
                   // Thực hiện xóa liên kết cũ
                   mgr.RemoveDataLink(_id);
               }

               // Khai báo liên kết với Excel
               _data.DataAdapterId = "AcExcel";
               // Khai báo tên cho liên kết
               _data.Name = _namelink;
               // Khai báo mô tả cho liên kết
               _data.Description = "";
               // Kiểm tra tham số vào Range để xác định câu lệnh kết nối
               // Nếu Range = null sẽ thực hiện liên kết với toàn bộ sheet
               // Nếu Range khác null sẽ liên kết với phạm vi được khai báo
               string[] _arr = _file.Split('\\');
               string _new = ".\\" + _arr[_arr.Length - 2] + "\\" + _arr[_arr.Length - 1];
               
               if (_range == null)
                   _data.ConnectionString = _new + "!" + _sheet;
               else
                   _data.ConnectionString = _new + "!" + _sheet + "!" + _range;
               // Khai báo kiểu liên kết
               _data.DataLinkOption = DataLinkOption.PersistCache;

               // Xác định kết nối cho phép thực hiện cập nhật
               _data.UpdateOption |= (int)UpdateOption.AllowSourceUpdate;
               

               // Thêm liên kết vào bộ quản lý các liên kết của bản vẽ
               // Đồng thời ghi nhớ ObjectId của liên kết
               _id = mgr.AddDataLink(_data);

               using (Transaction tr = db.TransactionManager.StartTransaction())
               {
                   tr.AddNewlyCreatedDBObject(_data, true);
                   tr.Commit();
               }
           }
           return _data;
       }

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...