Jump to content
avi612

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

Recommended Posts

avi612

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);

           
       }

Share this post


Link to post
Share on other sites
avi612

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;
       }

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×