当前位置:编程学习 > C#/ASP.NET >>

webbrowser 如何执行ajax函数 data-type标记

我想做一个程序,加载一个网站页面 执行里面的一个函数更新数据,类似与刷子性质的。但是跟js函数不一致不知道如何下手了,谁做过类似的程序吗,帮帮小弟。 通过这个链接按钮执行函数更新数据<a class="dpl-btn btn-op" data-type="mypst" href="javascript:;" title="更新">更新</a>   Ajax --------------------编程问答-------------------- 用jquery轻松搞定

$(a).click(function{
....
更新数据代码
....
});
--------------------编程问答--------------------
引用 1 楼 qiujialongjjj 的回复:
用jquery轻松搞定

winform使用webbrowser 如何实现模拟点击呢,可以具体些吗?毕竟不知道网站的具体数据操作,所以只能模拟点击。 --------------------编程问答--------------------
引用 2 楼 suiyuan110 的回复:
Quote: 引用 1 楼 qiujialongjjj 的回复:

用jquery轻松搞定

winform使用webbrowser 如何实现模拟点击呢,可以具体些吗?毕竟不知道网站的具体数据操作,所以只能模拟点击。
webform里面如果不知道具体数据操作,怎么帮你呢? --------------------编程问答-------------------- 很无奈,写一个在局域网内测试,居然一运行U盘内EXE文件就中病毒,模拟操作报错。不然的话可以经验交流了。。。。。。 --------------------编程问答-------------------- 网页页面分析是json执行操作,有什么办法再webbrowser加载完页面后能触发这个操作吗?<a class="dpl-btn btn-op" data-type="mypst" href="javascript:;" title="更新">更新</a>
还有 就是这个链接的所属div 加了data-mod-config='{"getOfferStarpstUrl":"/asyn/get_offer_star_pst.json","allowedOptimize":true}'>不知道这个能不能用到,对了那个json里面是{"hiddenpst":0},能根据这些信息实现对”更新“按钮的模拟点击或者触发json更新数据吗? --------------------编程问答-------------------- 额。。。。没有人能解决吗? --------------------编程问答-------------------- 最近玩玩,拿去参考:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Threading;
using System.IO;

namespace FTTH改造工程设备关联辅助工具
{
    public partial class Form1 : Form
    {
        DataSet 读取表格数据 = new DataSet();
        string[] 列名 = new string[] { "设备编号", "查询号码", "用户地址", "完成状态", "完成时间" };

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            创建数据显示(列名, 数据集);
            数据集.Columns[2].Width = 580;
            string 网页 = Application.StartupPath + "\\万年历查询.htm"; 打开网页.Navigate(网页);
        }

        private void 退出_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void 导入数据_Click(object sender, EventArgs e)
        {
            OpenFileDialog 打开文件 = new OpenFileDialog();
            打开文件.Filter = "Excel表格文件(xlsx)|*.xlsx;|Excel表格文件(xls)|*.xls;|文本文件(txt)|*.txt;|所有文件(*.*)|*.*";
            if (打开文件.ShowDialog() == DialogResult.OK)
            {
                if (打开文件.FileName.Contains(".xls"))
                    读取微软表格文件(打开文件.FileName);
            }
            else 数据集.DataSource = null;
        }

        private void 读取微软表格文件(string 文档名)
        {
            string 微软表格 = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + 文档名 + "; Extended Properties = \"Excel 12.0 Xml; HDR = No\"";
            OleDbConnection 表格文件 = new OleDbConnection(微软表格);
            表格文件.Open();
            OleDbDataAdapter 连接表格 = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", 表格文件);
            连接表格.Fill(读取表格数据, "读取Excel数据");
            表格文件.Close();
            数据集.DataSource = 读取表格数据.Tables["读取Excel数据"];
            控制颜色(数据集);
        }

        private void 创建数据显示(string[] 表名, DataGridView 控件名)
        {
            控件名.Columns.Clear();
            foreach (string 元素 in 表名)
            {
                DataGridViewTextBoxColumn 列 = new DataGridViewTextBoxColumn();
                列.HeaderText = 元素; 列.DataPropertyName = 元素;
                列.MaxInputLength = 3988; 控件名.Columns.Add(列);
            }
        }

        private void 控制颜色(DataGridView 控件名)
        {
            for (int 颜色 = 0, 行数 = 控件名.RowCount; 颜色 < 行数; 颜色++)
                if (颜色 % 2 == 0) 控件名.Rows[颜色].DefaultCellStyle.BackColor = Color.AliceBlue;
        }

        private void 提取数据_Click(object sender, EventArgs e)
        {
            /*for (int 数 = 0; 数 < 数据集.RowCount; 数++)
            { }
            string 发送号码 = 数据集.Rows[数].Cells[1].Value.ToString();
                HtmlElement ID控件 = 打开网页.Document.All["PSTNCodeInput"];
                if (ID控件 != null) ID控件.SetAttribute("value", 发送号码);
                Thread.Sleep(50);
                HtmlElement ID按钮 = 打开网页.Document.All["SearchButton"];
                if (ID按钮 != null) ID按钮.InvokeMember("click");
                Thread.Sleep(2000);
                ID控件 = 打开网页.Document.All["AddressNameInput"];
                数据集.Rows[数].Cells[2].Value = ID控件.GetAttribute("value");*/

        }

        private void 连接网站_Click(object sender, EventArgs e)
        {
            打开网页.Navigate(new Uri(网址.Text.Trim()));
        }

        private void 数据集_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            int 定行 = 数据集.CurrentCellAddress.Y, 定列 = 数据集.CurrentCellAddress.X;
            if (定列 == 3)
            {
                数据集.Rows[定行].Cells[3].Value = "√";
                数据集.Rows[定行].Cells[4].Value = DateTime.Now.ToShortDateString();
            }
            if (定列 < 3)
                Clipboard.SetText(数据集.Rows[定行].Cells[定列].Value.ToString());
            
        }

        private void 导出数据_Click(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Excel.Application 创建Excel文件 = new Microsoft.Office.Interop.Excel.Application();
            this.Invoke(new Action(delegate()
            {
                创建Excel文件.Application.Workbooks.Add(true);
                for (int 标头 = 0; 标头 < 列名.Length; 标头++) 创建Excel文件.Cells[1, 标头 + 1] = 列名[标头];
                for (int 行 = 0, 数 = 数据集.RowCount; 行 < 数; 行++)
                {
                    数据集.CurrentCell = 数据集.Rows[行].Cells[0];
                    for (int 列 = 0, 量 = 数据集.ColumnCount; 列 < 量; 列++)
                        创建Excel文件.Cells[行 + 2, 列 + 1] = "'" + 数据集.Rows[行].Cells[列].Value;
                }
                创建Excel文件.Visible = true;/* 创建Excel文件.SaveWorkspace();*/ 创建Excel文件.Quit();
            }));
            MessageBox.Show("数据导出Excel成功,请保存好!" + 数据集.RowCount.ToString() + "行数据。", "友情提示!"); 创建Excel文件.Quit();
        }

        private void 数据集_DragDrop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(typeof(System.String)) && 数据集.Rows.Count > 0)
            {
                Point clientPoint = 数据集.PointToClient(new Point(e.X, e.Y));
                数据集.Rows[数据集.HitTest(clientPoint.X, clientPoint.Y).RowIndex].Cells[数据集.HitTest(clientPoint.X,
                clientPoint.Y).ColumnIndex].Value = (System.String)e.Data.GetData(typeof(System.String));
            }
            int 定行 = 数据集.CurrentCellAddress.Y, 定列 = 数据集.CurrentCellAddress.X;
            string 数据整理 = 数据集.Rows[定行].Cells[2].Value.ToString();
            数据集.Rows[定行].Cells[2].Value = 数据整理.Remove(数据整理.IndexOf("||")).Trim();
        }

        private void 数据集_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(typeof(System.String)))
                e.Effect = DragDropEffects.Copy;
            else
                e.Effect = DragDropEffects.None;
        }

        private void 打开网页_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            int 定行 = 数据集.CurrentCellAddress.Y, 定列 = 数据集.CurrentCellAddress.X;
            HtmlElement ID控件 = 打开网页.Document.All["PSTNCodeInput"];
            if (e.KeyCode == Keys.Enter)
                if (ID控件 != null)/*赋值*/
                    ID控件.SetAttribute("value", 数据集.Rows[定行].Cells[定列].Value.ToString());
            if (e.KeyCode == Keys.Space)
            {
                ID控件 = 打开网页.Document.All["AddressNameInput"];/*获值*/
                if (数据集.Rows.Count > 0)
                {
                    if (ID控件 != null)数据集.Rows[定行].Cells[2].Value = ID控件.GetAttribute("value");
                    string 数据整理 = 数据集.Rows[定行].Cells[2].Value.ToString();
                    数据集.Rows[定行].Cells[2].Value = 数据整理.Remove(数据整理.IndexOf("||")).Trim();
                }
            }
        }


    }
}

--------------------编程问答-------------------- 还是没有解决,如何在webbrower控件下操作json,触发更新按钮,执行更新操作,我使用Newtonsoft.Json.dll操作,还是不能成功,还是什么反应都没有。


引用 5 楼 suiyuan110 的回复:
网页页面分析是json执行操作,有什么办法再webbrowser加载完页面后能触发这个操作吗?<a class="dpl-btn btn-op" data-type="mypst" href="javascript:;" title="更新">更新</a>
还有 就是这个链接的所属div 加了data-mod-config='{"getOfferStarpstUrl":"/asyn/get_offer_star_pst.json","allowedOptimize":true}'>不知道这个能不能用到,对了那个json里面是{"hiddenpst":0},能根据这些信息实现对”更新“按钮的模拟点击或者触发json更新数据吗?
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,