1)创建datagrid数据列/模板列/按钮的操作类:

datagrid|按钮|创建|模板|数据

 
//写这个程序,为了是显示局域网内的主机,然后通过用户点击选中的机器,检查是否该主机上安装有SQLSERVER,是为一个配置程序所写的
//这里提供CODE,给有需要的朋友

//设置DLL必须使用该命名空间
using System.Runtime.InteropServices;

  #region 动态链接库定义
  [DllImport("mpr.dll",CharSet=CharSet.Auto)] private static extern int WNetEnumResource(IntPtr hEnum, ref int lpcCount,IntPtr lpBuffer, ref int lpBufferSize );
  [DllImport("mpr.dll",CharSet=CharSet.Auto)] private static extern int WNetOpenEnum(RESOURCE_SCOPE dwScope,RESOURCE_TYPE dwType,RESOURCE_USAGE dwUsage,[MarshalAs(UnmanagedType.AsAny)][In] Object lpNetResource,out IntPtr lphEnum);
  [DllImport("mpr.dll",CharSet=CharSet.Auto)] private static extern int WNetCloseEnum( IntPtr hEnum );
  #endregion

  #region 定义枚举常量
  public enum RESOURCE_SCOPE
  {
   RESOURCE_CONNECTED = 0x00000001,
   RESOURCE_GLOBALNET = 0x00000002,
   RESOURCE_REMEMBERED = 0x00000003,
   RESOURCE_RECENT= 0x00000004,
   RESOURCE_CONTEXT= 0x00000005
  }

  public enum RESOURCE_TYPE
  {
   RESOURCETYPE_ANY= 0x00000000,
   RESOURCETYPE_DISK= 0x00000001,
   RESOURCETYPE_PRINT = 0x00000002,
   RESOURCETYPE_RESERVED = 0x00000008,
  }

  public enum RESOURCE_USAGE
  {
   RESOURCEUSAGE_CONNECTABLE =0x00000001,
   RESOURCEUSAGE_CONTAINER=0x00000002,
   RESOURCEUSAGE_NOLOCALDEVICE =0x00000004,
   RESOURCEUSAGE_SIBLING=0x00000008,
   RESOURCEUSAGE_ATTACHED=0x00000010,
   RESOURCEUSAGE_ALL =(RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED),
  }

  public enum RESOURCE_DISPLAYTYPE
  {
   RESOURCEDISPLAYTYPE_GENERIC= 0x00000000,
   RESOURCEDISPLAYTYPE_DOMAIN= 0x00000001,
   RESOURCEDISPLAYTYPE_SERVER= 0x00000002,

   RESOURCEDISPLAYTYPE_SHARE= 0x00000003,
   RESOURCEDISPLAYTYPE_FILE = 0x00000004,
   RESOURCEDISPLAYTYPE_GROUP= 0x00000005,
   RESOURCEDISPLAYTYPE_NETWORK= 0x00000006,
   RESOURCEDISPLAYTYPE_ROOT = 0x00000007,
   RESOURCEDISPLAYTYPE_SHAREADMIN = 0x00000008,
   RESOURCEDISPLAYTYPE_DIRECTORY = 0x00000009,
   RESOURCEDISPLAYTYPE_TREE = 0x0000000A,
   RESOURCEDISPLAYTYPE_NDSCONTAINER = 0x0000000B
  }

  public struct NETRESOURCE
  {
   public RESOURCE_SCOPE dwScope;
   public RESOURCE_TYPE dwType;
   public RESOURCE_DISPLAYTYPE dwDisplayType;
   public RESOURCE_USAGE dwUsage;
   [MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPTStr)] public string lpLocalName;
   [MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPTStr)] public string lpRemoteName;
   [MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPTStr)] public string lpComment;
   [MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPTStr)] public string lpProvider;
  }

  public enum NERR
  {
   NERR_Success = 0,/* Success */
   ERROR_MORE_DATA = 234, // dderror
   ERROR_NO_BROWSER_SERVERS_FOUND = 6118,
   ERROR_INVALID_LEVEL = 124,
   ERROR_ACCESS_DENIED = 5,
   ERROR_INVALID_PARAMETER = 87,
   ERROR_NOT_ENOUGH_MEMORY = 8,
   ERROR_NETWORK_BUSY = 54,
   ERROR_BAD_NETPATH = 53,
   ERROR_NO_NETWORK = 1222,
   ERROR_INVALID_HANDLE_STATE = 1609,
   ERROR_EXTENDED_ERROR= 1208
  }
  #endregion

  #region 开始列举网络函数
  public TreeNode pNode1;
  public TreeNode pNode2;
  public TreeNode pNode3;
  private void WNETOE(Object o)
  {
   int iRet;
   IntPtr ptrHandle = new IntPtr();
   try
   {
    iRet =WNetOpenEnum(RESOURCE_SCOPE.RESOURCE_GLOBALNET,RESOURCE_TYPE.RESOURCETYPE_ANY,RESOURCE_USAGE.RESOURCEUSAGE_ALL,o,out ptrHandle );
    if( iRet != 0 )return;

    int entries;
    int buffer = 16384;
    IntPtr ptrBuffer = Marshal.AllocHGlobal(buffer);
    NETRESOURCE nr;
    
    for(;;)
    {
     entries = -1;
     buffer = 16384;
     iRet =WNetEnumResource(ptrHandle,ref entries,ptrBuffer,ref buffer);
     if((iRet != 0) || (entries<1))break;

     Int32 ptr = ptrBuffer.ToInt32();
     for(int i=0;i<entries;i++ )
     {
      nr = (NETRESOURCE)Marshal.PtrToStructure( new IntPtr(ptr), typeof(NETRESOURCE) );
      if(RESOURCE_USAGE.RESOURCEUSAGE_CONTAINER == (nr.dwUsage & RESOURCE_USAGE.RESOURCEUSAGE_CONTAINER))
      {
       
       ptr += Marshal.SizeOf( nr );
       if(nr.dwDisplayType == RESOURCE_DISPLAYTYPE.RESOURCEDISPLAYTYPE_NETWORK)
       {
        pNode1 = tView.Nodes.Add(nr.lpRemoteName);//TreeView
        pNode1.ImageIndex = 0;
        pNode1.SelectedImageIndex = 0;
       }
       else if(nr.dwDisplayType == RESOURCE_DISPLAYTYPE.RESOURCEDISPLAYTYPE_DOMAIN)
       {
        pNode2 = pNode1.Nodes.Add(nr.lpRemoteName);
        pNode2.ImageIndex = 1;
        pNode2.SelectedImageIndex =1;
       }
       else if(nr.dwDisplayType == RESOURCE_DISPLAYTYPE.RESOURCEDISPLAYTYPE_SERVER)
       {
        string sPCName = nr.lpRemoteName;
        pNode3 = pNode2.Nodes.Add(sPCName.Substring(2,sPCName.Length-2));\\此处为去处机器名称前的两个"\\"字符
        pNode3.ImageIndex = 2;
        pNode3.SelectedImageIndex = 2;
       }

       WNETOE(nr);
      }
      
     }
    }
    Marshal.FreeHGlobal( ptrBuffer );
    iRet =WNetCloseEnum( ptrHandle );
   }
   catch(Exception ex)
   {
    MessageBox.Show("查找本地网络错误:"+ex.Message,"错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
   }
  }

  #endregion

  //窗体LOAD事件中,使用函数
  private void frmDBConnConfig_Load(object sender, System.EventArgs e)
  {
   WNETOE(null);
  }

时间: 2024-09-17 03:08:47

1)创建datagrid数据列/模板列/按钮的操作类:的相关文章

手工创建datagrid数据列/模板列/按钮事件+简单的数据操作类(asp.net)

  1)创建datagrid数据列/模板列/按钮的操作类:using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System

批量获取DataGrid控件模板列中的数据

datagrid|datagrid控件|模板|数据 批量获取DataGrid控件模板列中的数据 在DataGrid中一般只能单个获取每一行的数据,若要批量获取DataGrid控件中的数据必须对每一个模板列的控件进行扫描,获取其中的数据.我本想做的程序是根据不同的行数,由用户一次输入若干数据,提交后系统自动获取批量数据的程序.以下程序简单表达了需要实现的功能 test.aspx .......... <asp:DataGrid id="dgResult" runat="s

wpf mvvm 模式的datagrid控件模板列的列头里的checkbox怎么在viewmodel里撤销勾选状态

问题描述 wpfmvvm模式的datagrid控件模板列的列头里的checkbox怎么在viewmodel里撤销勾选状态点击全选,点击下一页分以后全选框还是勾选状态,希望datagrid重新加载数据后模板的全选状态为未勾选, 解决方案 解决方案二:你需要编写勾选的点击事件,绑定只是用来显示而不是做动作处理,mvvm模式也需要后台事件处理的支持的.

嵌套的DataGrid如何为子DataGrid动态增加模板列

datagrid|动态|模板 例子比较简单,直接贴代码了,例子达到以下功能: (1)两个DataGrid嵌套 (2)外面一个DataGrid分页 (3)里面一个DataGrid动态增加模板列  <%@ Page language="c#" Codebehind="WebForm45.aspx.cs" AutoEventWireup="false" Inherits="csdn2.WebForm45" %> <

DataGrid动态添加模板列的一个例子

datagrid|动态|模板 数据源结构同http://blog.csdn.net/lovecherry/archive/2005/03/24/328455.aspx表dep:depid(标识主键),depname(学院名字)表stu:stuid(标识主键),stuname(学生名字),studepid(学院id=表dep.depid) 前台:<%@ Page language="c#" Codebehind="WebForm30.aspx.cs" AutoE

DataGrid 动态添加模板列 实现代码_实用技巧

使用模版的另一个优势,就是它们能动态的添加到你的控件里面去. 这样的话, 你可以事先设计好模版, 然后通过简单的几行代码就添加到你的控件中. 下面这篇文章就要告诉你如何如何一步步的添加一个动态的ItemTemplate和EditItemTemplate到DataGrid中. 另外, 还会告诉你怎么获取和更新用户对EditItemTemplate所做的改变. 例子将会是很简单的. 然后, 我很快就会在TripleASP上面正式发布一个改进后的TableEditor版本. 这个版本将更好的说明如何使

DataGrid中的模板列

问题描述 使用DataGrid中的模板时出问题了!我在模板列的ItemTemplate中使用了CheckBox控件;CheckBox中的AuotPostback改了TRUE(我想当CheckBox被选时,我要使这一行其他的模板列或绑定列成为编辑状态)但是不知道怎么写!希望哥哥姐姐门能帮我解决!谢谢! 解决方案 解决方案二:www.componentart.com你来这个网站看看他的控件.

datagrid动态添加模板列

问题描述 又一个DataGrid,已经绑定两列数据,我想再给它动态添加两个绑定列我用的下面的代码TemplateColumntc=newTemplateColumn();tc.HeaderText="ddddd";this.DataGrid1.Columns.AddAt(0,tc);DataGrid里面怎么不显示我加的这列啊 解决方案 解决方案二:这段代码貌似有问题,不是ColumnField能往里面加吗?

WPF DataGrid 增加&quot;更新&quot;模板列,根据行Row的选择而显示&quot;更新&quot;按钮

SelectionMode="Single" <DataGridTemplateColumn Header=""> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Content="更新" Tag="{Binding}"> <Button.Style> <Style x:Name=&quo