cellclick如何操作datagriview的空白行?

各位大虾:
小弟有一个技术问题想请教大家,我在做datagridview的cellclick事件时,系统报错,提示超出索引范围。具体是这样子的:
--------------------------------------
单 位 | 姓名 |籍贯 | 团员
---------------------------------------
一班 | 张三 |湖南 | Y
----------------------------------------
二班 |李四 |广西 | N
----------------------------------------
空白行
----------------------------------------
这是datagridview表,因为我以后还要往下加空白行,然后在空白行里面加内容,所以必须要有空白行。

我在datagridview表的cellclick事件中写了一段代码,想点击第一行后实现这样的功能:当“团员”字段的值为Y时,在textbox1中显示“是团员”,不是Y时显示“不是团员”,我的代码是这样子的:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{

        if (this.dataGridView1.CurrentRow.Cells["column4"].Value.ToString() == "Y")
        {
            textBox1.Text = "是团员";
        }
        else
        {
            textBox1.Text = "不是团员";
        }
    }

在前二行怎么点击都没有问题,但是当我用按钮新增一条空白行在datagridview后,这时再点击空白行就报错,提示超出了索引范围,请各位大虾在我看一下如何解决啊.谢谢啦。

2个回答

判断点击的行索引是否大于rows的count-1

新后一条空的记录后,还是会报错啊。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
datagridview的datagridview_cellclick无法正常触发怎么处理
10中6出错率太高datagridview的datagridview_cellclick无法正常触发怎么处理 datagridview的datagridview_cellclick无法正常触发怎么处理 datagridview的datagridview_cellclick无法正常触发怎么处理
c# datagridview 控件 选择事件问题 不是点击
在datagridview 控件中 我使用的是 CellClick 点击事件 发现一个问题 就是比如我要删除一个记录 ,获取到数据库记录显示在datagridview后 ![图片说明](https://img-ask.csdn.net/upload/201905/07/1557198647_569553.png) 默认没有被选中的记录。 此时选中一条记录删除后 更新datagirdview 默认蓝条选中第一条数据。 此时不再点击datagridiew 点击删除 删除的是刚才已经删除的记录信息。d不是当前默认选中的第一条记录。 另一个情况如图。 点击订单表数据 读取订单明细表 订单明细表中默认选中了第一条信息 此时没有点击订单明细表中数据 也就没有触发cellclick事件。 再次点击删除的话 订单号获取到了 但是订单明细表中 产品的编号没有获取到 此时点击确定就会报错。 这个问题应该怎么避免呢。 我想的是是不是有选择事件 而不是点击事件 只要带蓝条就是默认选中 获取数据 而不是点击。 或者有什么方法处理这个情况。
关于如何向Report1.rdlc传值的问题,请高手指点,万分感谢!
Imports System Imports System.Data Imports System.Data.OleDb Public Class Code Private Sub Code_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.ReportViewer1.RefreshReport() ' ​初始化报表 Dim strSQL As String = "Select * From BookView" '数据库查询语句(使用Access数据库) With Me.DataGridView1 '设置DataGridView的一系列属性 .DataSource = GetDat(strSQL).Tables(0) .ReadOnly = True '只读 .RowHeadersWidth = 8 .Columns(0).Width = 96 .Columns(1).Width = 96 .AllowUserToResizeColumns = False '禁止调整列宽 .SelectionMode = DataGridViewSelectionMode.FullRowSelect '选择模式为整行 End With End Sub Private Shared Function GetDat(ByVal strSql As String) As DataSet '数据库连接,建立一个DataSet,返回一个DataSet Dim StrConn As String = "Provider= Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\myTry.mdb" Dim cn As OleDbConnection = New OleDbConnection(StrConn) Dim da As OleDbDataAdapter = New OleDbDataAdapter(strSql, cn) Dim ds As DataSet = New DataSet Try cn.Open() da.Fill(ds) cn.Close() Catch ex As Exception MsgBox(ex.ToString) End Try Return ds End Function Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick Dim IntNum As Integer = e.RowIndex Dim myNum As String = Me.DataGridView1.SelectedRows(IntNum).Cells(0).ToString Dim strSql As String = "Select * From BookCode Where Num = " & myNum Dim myTab As Data.DataTable = GetDat(strSql).Tables(0) '......下面的代码准备将表中的记录传给报表Report1.rdlc,该如何写?谢谢! End Sub End Class ![CSDN移动问答][1] [1]: http://b.hiphotos.baidu.com/zhidao/pic/item/060828381f30e9244156b6464f086e061c95f7d3.jpg
请问这个问题怎么解决?
![图片说明](https://img-ask.csdn.net/upload/201501/22/1421896206_929753.jpg) **我的数据库里有“病案号”这一列。从弹出的对话框指出是cellclick出错。到底是我的代码有问题还是数据库?** ![图片说明](https://img-ask.csdn.net/upload/201501/22/1421897870_154485.jpg) ![图片说明](https://img-ask.csdn.net/upload/201501/22/1421897675_569547.jpg)
c#对数据表格控件已选行记录的调用
public partial class FrmMainfo : Form { public FrmMainfo() { InitializeComponent(); } string connStr = ConfigurationManager.ConnectionStrings["str"].ConnectionString; private void button2_Click(object sender, EventArgs e) { FrmMadetail frmmadetail = new FrmMadetail(); frmmadetail.Show(); } private void FrmMainfo_Load(object sender, EventArgs e) { comboBox2.SelectedIndex = 0; comboBox3.SelectedIndex = 0; string sql = "select Id,sbmc,sbbh,sbfl,sblx,ggxh,azwz,sccj,sybm,sycj from Information"; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); DataTable dt = new DataTable(); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(dt); dataGridView1.DataSource = dt; } public class DvgData { public string id = ""; public string ID { get { return id; } set { id = value; } } } private void dataGridView1ListHeadText() { dataGridView1.Columns[0].HeaderText = "编号"; dataGridView1.Columns[1].HeaderText = "设备名称"; dataGridView1.Columns[2].HeaderText = "设备编号"; dataGridView1.Columns[3].HeaderText = "设备分类"; dataGridView1.Columns[4].HeaderText = "设备类型"; dataGridView1.Columns[5].HeaderText ="规格型号"; dataGridView1.Columns[6].HeaderText ="安装位置"; dataGridView1.Columns[7].HeaderText ="生产厂家"; dataGridView1.Columns[8].HeaderText = "使用部门"; dataGridView1.Columns[9].HeaderText = "使用车间"; dataGridView1.Columns[10].HeaderText = "外形尺寸"; dataGridView1.Columns[10].Visible = false; dataGridView1.Columns[11].HeaderText = "总重"; dataGridView1.Columns[11].Visible = false; dataGridView1.Columns[12].HeaderText = "总功率"; dataGridView1.Columns[12].Visible = false; dataGridView1.Columns[13].HeaderText = "出厂编号"; dataGridView1.Columns[13].Visible = false; dataGridView1.Columns[14].HeaderText = "制造日期"; dataGridView1.Columns[14].Visible = false; dataGridView1.Columns[15].HeaderText = "使用日期"; dataGridView1.Columns[15].Visible = false; dataGridView1.Columns[16].HeaderText = "购入日期"; dataGridView1.Columns[16].Visible = false; } private void button1_Click(object sender, EventArgs e) { string azwz = ""; //定义一个string 类型的变量 azwz = comboBox3.SelectedItem.ToString(); string sbfl=""; sbfl = comboBox2.SelectedItem.ToString(); string sqf = "select * from Information where azwz = '" +azwz.Trim() + "'and sbfl = '" +sbfl.Trim() + "'"; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sqf, conn); conn.Open(); DataTable dt = new DataTable(); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(dt); dataGridView1.DataSource = dt; this.dataGridView1ListHeadText(); } private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex > 0) { int id = (int)dataGridView1.Rows[e.RowIndex].Cells[0].Value;//记录选中的ID号 } } } } public partial class FrmMadetail : Form { public FrmMadetail() { InitializeComponent(); } string connStr = ConfigurationManager.ConnectionStrings["str"].ConnectionString; FrmMainfo frmmainfo = new FrmMainfo(); private void FrmMadetail_Load(object sender, EventArgs e) { string sqf = "select * from Information where ID = 1"; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sqf, conn); conn.Open(); DataTable dt = new DataTable(); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(dt); textBox1.Text = dt.Rows[0][1].ToString(); textBox2.Text = dt.Rows[0][2].ToString(); textBox3.Text = dt.Rows[0][3].ToString(); textBox4.Text = dt.Rows[0][4].ToString(); } 本人小白一个 现在需要把第一个窗体数据表格控件 选中的行 INT 记录下来 接着在 另外一个窗体LOAD事件中 利用这个记录值 用SQL语句进行查询 这个代码要如何实现呢 谢谢大家 初来咋到 全部自学啊 很辛苦
c# dataGridView1 点击获取内容 点击标题栏出来超出索引错误
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { button2.Enabled = true; Sheet_id= this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString(); sn.Text = this.dataGridView1.SelectedRows[0].Cells[1].Value.ToString(); brand.Text = this.dataGridView1.SelectedRows[0].Cells[2].Value.ToString(); model.Text = this.dataGridView1.SelectedRows[0].Cells[3].Value.ToString(); num.Text = this.dataGridView1.SelectedRows[0].Cells[5].Value.ToString(); colour.Text = this.dataGridView1.SelectedRows[0].Cells[4].Value.ToString(); describe.Text = this.dataGridView1.SelectedRows[0].Cells[6].Value.ToString(); ``` 代码如上 我目的是要点击datagridview 控件获取每一行的第一列数据 但是发现一个问题就是 读取数据库后 dategridview 有了数据 还有一行标题栏 点击标题直接报错 System.ArgumentOutOfRangeException:“索引超出范围。必须为非负值并小于集合大小。 Arg_ParamName_Name” 点击数据没有问题 点击标题栏就是这 请问什么原因呢 还有有什么优化的代码吗 可以实现这个功能
ext 获取编辑后表格的值
看API写了一段获取编辑后表格的值 可是怎么都不行 我写的代码如下: //grid是事先已定义好的EditorGridPanel grid.on("cellclick",function(grid,row,column){//[color=red]这个事件是当点击单元格触发会传递行和列的值[/color] grid.on("afteredit",//[color=red]这个是编辑完单元格触发[/color] function(){ var record=new Ext.data.Record({//[color=red]定义一个record[/color] data:storee//[color=red]数据源这个是已经定义的jsonStore[/color] }); record.endEdit();//当编辑完成时通知store alert(record.get("lmbh"));//[color=red]想弹出编辑lmbh这个dataindex的后的值 可是总是为undefined[/color] Ext.Ajax.request({ url:'<%=request.getContextPath()%>/updateBI.do?dataIndex='+cm.getDataIndex(column) } ) } )
新手弱智问 c#click 和 doubleclick
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; namespace test20150423 { public partial class www : Form { public www() { InitializeComponent(); } DateTime dt; bool end = false; TimeSpan temp = new TimeSpan (20000000); //2s之内为双击 private void Form1_MouseDown(object sender, MouseEventArgs e) { //if (dt == null) //{ // mc(); //} if (end) { if (temp >= (DateTime.Now - dt)) { mdc(); } else { mc(); } } //MessageBox.Show((DateTime.Now - dt).ToString()); else { dt = DateTime.Now; mc(); } end = !end; } private void mc() { MessageBox.Show("cellclick"); } private void mdc() { MessageBox.Show("celldoubleclick"); } } } 1.单击功能不可用 需要点击第二次 2.TimeSpan 使用 为甚么 2s 是 20 000 000
textbox输入0后控件消失问题
c#winform中,textbox控件动态绑定在一个datagridview控件上,在textbox中输入其它字符都正常,但是一旦输入数字0,控件立刻消失,请问这个问题怎么解决? #region - 单元格点击触发事件 - private void mDGV_CellClick(object sender, DataGridViewCellEventArgs e) { if(e.RowIndex<0||e.ColumnIndex<1 || e.ColumnIndex>3) return; Rectangle rect = mDGV.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true); mtxctl = CreatTxCtl(rect); mtxctl.TextChanged += new EventHandler(Txbox_TextChanged); // 绑定文本改变改变事件 mtxctl.LostFocus += new EventHandler(Txbox_FocusChanged); // 绑定控件失去焦点事件 mDGV.Controls.Add(mtxctl); mtxctl.Focus(); } #endregion #region - 生成控件 - private TextBox CreatTxCtl(Rectangle rect) { TextBox mbox = new TextBox(); mbox.Font = new Font(FontFamily.GenericSansSerif,11.0F,FontStyle.Regular); mbox.AutoSize = false; mbox.BorderStyle = BorderStyle.None; mbox.Text = (mDGV.CurrentCell.Value!=null)?mDGV.CurrentCell.Value.ToString():""; mbox.Left = rect.Left; mbox.Top = rect.Top; mbox.Width = rect.Width-1; mbox.Height = rect.Height-1; return mbox; } #endregion ``` ```
EXT如何给WINDOW弹窗传值
Ext.onReady(function() { // 设备类型 var devBoxs = [["#1办公楼", "#1办公楼"], ["#2办公楼", "#2办公楼"]] var proxy = new Ext.data.MemoryProxy(devBoxs); var reader = new Ext.data.ArrayReader({}, [{ name : "devTypeName", type : "string", mapping : 0 }, { name : "devTypeName", type : "string", mapping : 1 }]) var store = new Ext.data.Store({ proxy : proxy, reader : reader, autoLoad : true }) var devBoxCombox = new Ext.form.ComboBox({ name : "devTypeCode", width : 220, fieldLabel : "房间位置", hiddenName : "devTypeCode", triggerAction : "all", editable : false, store : store, displayField : "devTypeName", valueField : "devTypeName", emptyText : "please check!", value : "A机房" }) // 设备类型 var devBoxWheres = [["网络组", "网络组"]]; var proxy = new Ext.data.MemoryProxy(devBoxWheres); var reader = new Ext.data.ArrayReader({}, [{ name : "devTypeName", type : "string", mapping : 0 }, { name : "devTypeName", type : "string", mapping : 1 }]) var store = new Ext.data.Store({ proxy : proxy, reader : reader, autoLoad : true }) var devWhereCombox = new Ext.form.ComboBox({ name : "devTypeCode", width : 220, fieldLabel : "所属部门", hiddenName : "devTypeCode", triggerAction : "all", editable : false, store : store, displayField : "devTypeName", valueField : "devTypeName", emptyText : "please check!", value : "36#" }) var roomForm = new Ext.form.FormPanel({ width : 620, autoHeight : true, frame : true, bodyStyle : "padding:5px", layout : "form", labelWidth : 70, labelAlign : "left", items : [{ layout : "column", items : [{ columnWidth : .5, layout : "form", items : [{ name : "linksNo", xtype : "textfield", fieldLabel : "房间名称", allowBlank : false, width : 220, value : "102室", blankText : '不能为空' }] }, { columnWidth : .5, layout : "form", items : devBoxCombox }] }, { layout : "column", items : [ { columnWidth : .5, layout : "form", items : devWhereCombox },{ columnWidth : .5, layout : "form", items : [{ name : "linksModeld", xtype : "textfield", fieldLabel : "负责岗位", width : 220, value : "资产岗", allowBlank : false, blankText : '不能为空' }] }] },{ layout : "form", items : [{ name : "remarkCode", xtype : "textarea", fieldLabel : "备注", width : 519, height:50, value : "网络组专用机房" }] }], buttonAlign : "center", buttons : [{ text : "提交", handler : function() { Ext.Msg.alert("提示", "增加办公室成功!") } }, { text : "重置", handler : function() { roomForm.getForm().reset(); } }, { text : "关闭", handler : function() { roomWin.hide(); } }] }); var roomWin = new Ext.Window({ title : "增加办公室对话框", width : 650, autoHeight : true, closeAction : "hide", maskDisabled : true, plain : false, bodyStyle : "padding:8px", items : roomForm, modal : true, listeners : { close : function(window) { var delObj = document.getElementById(window.button.id); delObj.parentNode.parentNode.removeChild(delObj.parentNode); } } }) // 定义用于表示订单的数组 var data = [{ roomName : "102室", roomAddr : "#1办公楼", roomDept:"网络组", roomUse:"资产岗", devCount : "45", devUse:"13", remark : "网络组工作办公室" }]; // 定义Proxy var proxy = new Ext.data.MemoryProxy(data); var Order = Ext.data.Record.create([{ name : "roomName", type : "string", mapping : "roomName" }, { name : "roomAddr", type : "string", mapping : "roomAddr" }, { name : "devCount", type : "string", mapping : "devCount" }, { name : "devUse", type : "string", mapping : "devUse" }, { name : "roomDept", type : "string", mapping : "roomDept" }, { name : "roomUse", type : "string", mapping : "roomUse" }, { name : "remark", type : "string", mapping : "remark" }]); // 定义Reader var reader = new Ext.data.JsonReader({}, Order); // 定义Store var store = new Ext.data.Store({ proxy : proxy, reader : reader, autoLoad : true, pruneModifiedRecords : true }); // 定义列模型 var cm = new Ext.grid.ColumnModel([{ header : "房间名称", dataIndex : "roomName", width : 100, align : "center", sortable : true }, { header : "房间位置", dataIndex : "roomAddr", width : 90, align : "center", sortable : true }, { header : "归属部门", dataIndex : "roomDept", width : 90, align : "center", sortable : true }, { header : "负责岗", dataIndex : "roomUse", width : 90, align : "center", sortable : true, editor : new Ext.grid.GridEditor(new Ext.form.TextField()) }, { header : "端口数量", dataIndex : "devCount", width : 90, align : "center", sortable : true }, { header : "在用端口数", dataIndex : "devUse", width : 90, align : "center", sortable : true, editor : new Ext.grid.GridEditor(new Ext.form.TextField()) }, { id : "remark", header : "描述", dataIndex : "remark", width : 150, align : "center", sortable : true, editor : new Ext.grid.GridEditor(new Ext.form.TextField()) } ]); // 分页控件 其实分页还是要后台控制的 var pagingBar = new Ext.PagingToolbar({ autoWidth : true, pageSize : 3, displayInfo : true, emptyMsg : "没有数据显示", displayMsg : "显示从{0}条到{1}条数据,共{2}条数据", store : store, loadMask : true }); var search=new Ext.Form.TextField({ emptyText:"请输入房间名称" }); // 定义EditGridPanel var grid = new Ext.grid.GridPanel({ title : "房间列表视窗", store : store, cm : cm, renderTo : "a", autoExpandColumn : "remark", autoWidth : true, height : 300, autoEncode : true, // 提交时是否自动编码 tbar : ["-", { text : "增加房间", icon : "../../../extjs/resources/images/default/dd/drop-add.gif", handler : function() { roomWin.show(); } }, "-", { text : "修改房间", icon : "../../../extjs/resources/images/default/dd/drop-add.gif", cls : "x-btn-text-icon", handler : function() { roomWin.show(); } }, "-", { text : "删除机房", icon : "../../../extjs/resources/images/default/dd/drop-no.gif", cls : "x-btn-text-icon", handler : function() { var sm = grid.getSelectionModel(); if (sm.hasSelection()) { Ext.Msg.confirm("提示", "真的要删除选中的行吗?", function(btn) { if (btn == "yes") { var rsm = grid.getSelectionModel();// 得到行选择模型 var view = grid.getView(); var store = grid.getStore(); for (var i = view.getRows().length - 1; i >= 0; i--) { if (rsm.isSelected(i)) { store.remove(store.getAt(i)); } } view.refresh(); } }); } else { Ext.Msg.alert("错误", "请先选择删除的行,谢谢!"); } } }, "-","->"search,{ text:查询},"-" ], bbar : pagingBar }); grid.addListener('rowdblclick', cellclick); function cellclick(grid, rowIndex, e) { roomstore.remove(roomstore.getAt(0)); //view.refresh(); // devStore.load({params:{start:0, limit:3}}); } }) 1.search框在ttar如何居中 现在是挨着上面了 下面还有一段距离,我想把文本框居中; 2,我选中某一列点击修改时 怎么样把当前行各列的值传入到增加房间的视窗中;
extjs3.4 window组件第一次打开后关闭正常,第二次打开后就不能关闭了
<p> </p> <pre name="code" class="js"><span style="color: #ff0000;">在页面上有个grid表格 里面有个增加按钮,点击增加按钮时弹出一个窗口,填写相关信息 第一次点击增加按钮,窗口打开,可以关闭,第二次点击增加按钮后,弹出的窗口就不能关闭了. 截图是两次打开窗口的截图,第二次截图还多了几个下拉框 ,用的是extjs3.4的版本,改成extjs2.0的版本就正常了,是不是两个版本之间有什么区别,求指导</span> grid代码 var Record CommonGrid = Ext .extend( Ext.grid.GridPanel, { // saveFlag : true, constructor : function(cfg) { var cfg = cfg || {}; Ext.apply(this, cfg); var data = [ [ '10.21.34.56', '华为设备', '5680', 'aa', '1', '1', '1', '1', '1', '1' ], [ '10.21.34.56', '中兴设备', 'C200', 'aa', '2', '1', '1', '1', '1', '1' ], [ '10.21.34.56', '烽火设备', 'AN5616', 'aa', '2', '2', '1', '1', '1', '1' ], [ '10.21.34.56', '贝尔设备', 'AN5616', 'aa', '3', '3', '1', '1', '1', '1' ] ]; var Record = Ext.data.Record.create([ { name : 'logicid' }, { name : 'logiccode' }, { name : 'netproId' }, { name : 'logicname' }, { name : 'logicdec' }, { name : 'netproname' }, { name : 'netmodel' }, { name : 'bmodel' }, { name : 'ip' }, { name : 'port' } ]); this.NameCombo = new Ext.form.ComboBox({ id : 'nameCombo', emptyText : "请选择...", isFormField : true, width : 100, mode : 'local', allowBlank : false,// 不允许为空 blankText : "不能为空",// forceSelection : true, triggerAction : 'all', fieldLabel : "逻辑网元名称", displayField : 'text', listWidth : 100, valueField : 'id', store : new Ext.data.SimpleStore({ data : [ [ '1', '合肥' ], [ '2', '芜湖' ], [ '3', '安庆' ], [ '4', '蚌埠' ] ], fields : [ 'id', 'text' ] }), editable : false,// 不允许输入 }); this.ClassCombo = new Ext.form.ComboBox({ id : 'classCombo', emptyText : "请选择...", isFormField : true, width : 100, mode : 'local', allowBlank : false,// 不允许为空 blankText : "不能为空",// forceSelection : true, triggerAction : 'all', fieldLabel : "网元协议名称", displayField : 'text', listWidth : 100, valueField : 'id', store : new Ext.data.SimpleStore({ data : [ [ '1', '合肥' ], [ '2', '芜湖' ], [ '3', '安庆' ], [ '4', '蚌埠' ] ], fields : [ 'id', 'text' ] }), editable : false,// 不允许输入 }); this.store = new Ext.data.Store({ // proxy : new Ext.data.HttpProxy({url : // 'getProcessRuleList.action', method : 'POST'}), // reader : new Ext.data.JsonReader( // {totalProperty:'total',root:'root'}, // [{name : 'id'},{name : 'busiTypeId'}, {name : // 'busiType'}, {name // : 'faultId'}, // {name : 'faultName'}, {name : 'accessWay'},{name // : 'portType'}, // {name : 'processName'}, // {name : 'processchname'}, {name : 'createTime'}] // ) autoLoad : true, proxy : new Ext.data.MemoryProxy(data),// 获得本地数据 reader : new Ext.data.ArrayReader( // 解析数据 {}, Record ) }); CommonGrid.superclass.constructor .call( this, { title : '网元信息列表', id : '_processRuleConfig', region : 'north', height : 300, border : false, stripeRows : true, split : true, /* * viewConfig:{ forceFit:true }, */ cm : new Ext.grid.ColumnModel( [ new Ext.grid.RowNumberer(), { header : '逻辑网元ID', align : 'center', dataIndex : 'logicid', width : 150, hidden : true }, { header : '逻辑网元编码', align : 'center', dataIndex : 'logiccode', width : 150, hidden : true }, { header : '网元协议ID', align : 'center', dataIndex : 'netproId', width : 150, hidden : true }, { header : '逻辑网元名称', align : 'center', dataIndex : 'logicname', width : 150, sortable : true }, { header : '逻辑网元描述', align : 'center', dataIndex : 'logicdec', width : 150, sortable : true }, { header : '网元协议名称', align : 'center', dataIndex : 'netproname', width : 150, renderer : this.detailInfoShow, sortable : true }, { header : '网元交互模式', align : 'center', dataIndex : 'netmodel', width : 150, sortable : true }, { header : '部署模式', align : 'center', dataIndex : 'bmodel', width : 150, sortable : true }, { header : '服务IP', align : 'center', dataIndex : 'ip', width : 150, sortable : true }, { header : '服务端口', align : 'center', dataIndex : 'port', width : 150, sortable : true } ]), bbar : new Ext.PagingToolbar( { pageSize : 10, store : this.store, firstText : '第一页', nextText : '下一页', prevText : '上一页', refreshText : '刷新', lastText : '最后一页', beforePageText : '当前', afterPageText : '页/共{0}页', displayInfo : true, displayMsg : '显示第 {0} 条到 {1} 条记录,一共 {2} 条', doLoad : function(C) { // 为了点击下一页传递参数用 var B = {}; var D = {}; A = this.paramNames; B[A.start] = C; B[A.limit] = this.pageSize; if (this .fireEvent( "beforechange", this, B) !== false) { this.store .load({ params : B, callback : function( records, option, success) { if (success) { Ext .getCmp("_processRuleConfig").store .load({ params : B }); } } }); } }, emptyMsg : "没有记录", items : [ ' ', { text : '新增', iconCls : 'new', handler : this.doAdd, scope : this }, '-', { text : '修改', iconCls : 'update', handler : this.doModify, scope : this }, '-', { text : '删除', iconCls : 'delete', handler : this.doDelete, scope : this }, '-', { text : '配置命令模板', iconCls : 'update', handler : this.doCommand, scope : this }, '-', { text : '查看物理网元', iconCls : 'find', handler : this.doNet, scope : this } ] }), tbar : new Ext.Toolbar( { items : [ '逻辑网元名称:', this.NameCombo, '-', '网元协议名称:', this.ClassCombo, '-', { text : '查询', iconCls : 'find', handler : this.doQuery, scope : this }, { text : '重置', iconCls : 'find', handler : this.doClear, scope : this } ] }) }); this.initListener(); }, initListener : function() { this.addListener("render", function() { this.loadMask = new Ext.LoadMask(Ext.getBody(), { msg : '正在载入数据,请稍候...' }); this.store.load({ params : { start : 0, limit : 5 } }); }, this); this.addListener("rowdblclick", function(grid, index, e) { this.doModify(); }, this); this.addListener("cellclick", function(grid, index, e) { this.doclick(); }, this); }, detailInfoShow : function(val, medadata, record, rowIndex, colIndex, store) { // var testOrderId = record.get('testOrderId'); return "&lt;a href='http://localhost:8080/extjs/jsp/netprotocol.jsp'&gt;" + val + "&lt;/a&gt;"; }, <span style="color: #ff0000;">//窗口弹出代码</span> <span style="color: #ff0000;"> doAdd : function() { if(Ext.getCmp('apWindow')!=null){ Ext.getCmp('apWindow').close(); var logicWindow = new LogicWindow({ pview : this }); logicWindow.show(); }else{ var logicWindow = new LogicWindow({ pview : this }); logicWindow.show(); } </span> }, doCommand : function() { // 举例说明 window .open( "http://localhost:8080/extjs/jsp/netprotocol.jsp", "_blank"); }, doNet : function() { // 举例说明 window .open( "http://localhost:8080/extjs/jsp/netprotocol.jsp", "_blank"); }, doclick : function() { var record = this.getSelectionModel().getSelected(); var logicname = record.get("logicname"); this.ppanel.configRegion.rule.logicname .setValue(logicname); this.ppanel.configRegion.rule.logicname.disable(); }, doModify : function() { var record = this.getSelectionModel().getSelected(); if (record == null) { Ext.Msg.alert('系统提示', padBlank + padBlank + "请选择一条记录!" + padBlank + padBlank); return; } var logicWindow = new LogicWindow({ pview : this }); logicWindow.show(); logicWindow.logicForm.loadData(record); }, doDelete : function() { var record = this.getSelectionModel().getSelected(); if (record == null) { Ext.Msg.alert('系统提示', padBlank + padBlank + "请选择一条记录!" + padBlank + padBlank); return; } this.store.remove(record); } }); <span style="color: #ff0000;">窗口代码</span> /** * 逻辑网元信息配置窗口 */ LogicWindow = Ext.extend(Ext.Window, { constructor : function(cfg) { var cfg = cfg || {}; Ext.apply(this, cfg); this.logicForm = new RuleCommand({ pwin : this }); <span style="color: #ff0000;"> LogicWindow.superclass.constructor.call(this, { title : "逻辑网元信息配置", id : 'apWindow', resizable : false, autoScroll : true, width : 1100, height : 300, // bodyStyle : 'padding:5px 0px 5px 5px', plain : true, modal : true, closeAction : 'close', closable:true, items : [ this.logicForm ], // buttonAlign : 'center', // buttons : [ { // text : '添加', // iconCls : 'save', // handler : this.doSave, // scope : this // }, { // text : '修改', // iconCls : 'cancel', // handler : this.doModify, // scope : this // }, { // text : '重置', // iconCls : 'find', // handler : this.doClear, // scope : this // } ] }); },</span> doClose : function() { //this.pwin.close(); }, // /** // * 保存信息 // */ doSave : function() { var o = this.logicForm.getData(); if (o == null) { Ext.MessageBox.alert("系统提示", padBlank + "请完善相关信息!" + padBlank); return; } //this.store.insert(n, new Ext.data.Record(data)); var n=this.pview.store.getCount(); this.pview.store.insert(n, new Ext.data.Record(o)); this.doClose(); }, // /** // * 添加公共信息 // */ // doInsert : function(o){ // var that = this ; // ResApManager.saveAp(o,{ // callback:function(data){ // if(data == -1) { // Ext.MessageBox.alert("系统提示", padBlank + "添加失败!" +padBlank); // } else { // that.doClose(); // Ext.MessageBox.alert("系统提示", padBlank + "添加成功!" +padBlank); // that.pview.getStore().reload(); // } // } // }); // }, // /** // * 修改公共信息 // */ // doUpdate : function(o){ // var that = this; // ResApManager.updateAp(o,{ // callback: function(data) { // if(data == -1) { // Ext.MessageBox.alert("系统提示:", padBlank + "修改失败!" + padBlank); // } else { // that.doClose(); // Ext.MessageBox.alert("系统提示", padBlank + "修改成功!" + padBlank); // that.pview.getStore().reload(); // } // } // }); // } }); /** * @author 网元协议配置 */ // var update_Id = null; /** * @author 网元协议配置 */ // var update_Id = null; RuleCommand = Ext.extend(Ext.form.FormPanel, { constructor : function(cfg) { var cfg = cfg || {}; Ext.apply(this, cfg); this.initialItems(); RuleCommand.superclass.constructor.call(this, { layout : 'form', region : 'center', height : '250', border : false, frame : true, split : true, // viewConfig : { // forceFit : true // }, autoScroll : true, buttonAlign : 'center', buttons : [ { text : '添加', iconCls : 'save', handler : this.doSave, scope : this }, { text : '修改', iconCls : 'cancel', handler : this.doModify, scope : this }, { text : '重置', iconCls : 'find', handler : this.doClear, scope : this } ] // bodyStyle:'margin: 10 0 5px 10px;', }); }, initialItems : function() { this.logicname = new Ext.form.TextField({ fieldLabel : "逻辑网元名称", width : 130, length : 10, allowBlank : false, // 不允许为空 blankText : '该项不能为空!'// 显示为空的提示信息 }); this.logiccode = new Ext.form.TextField({ fieldLabel : "逻辑网元编码", width : 130, length : 10, allowBlank : false, // 不允许为空 blankText : '该项不能为空!'// 显示为空的提示信息 }); this.logicdec = new Ext.form.TextField({ fieldLabel : "逻辑网元描述", width : 130, length : 10, allowBlank : false, // 不允许为空 blankText : '该项不能为空!'// 显示为空的提示信息 }); this.ip = new Ext.form.TextField({ fieldLabel : "服务IP", width : 130, length : 10, allowBlank : false, // 不允许为空 blankText : '该项不能为空!'// 显示为空的提示信息 }); this.port = new Ext.form.TextField({ fieldLabel : "服务端口", width : 130, length : 10, allowBlank : false, // 不允许为空 blankText : '该项不能为空!'// 显示为空的提示信息 }); this.netproname = new Ext.form.ComboBox({ id : 'netproname', emptyText : "请选择...", isFormField : true, width : 130, mode : 'local', allowBlank : false,// 不允许为空 blankText : "不能为空",// forceSelection : true, triggerAction : 'all', fieldLabel : "网元协议名称", displayField : 'text', listWidth : 100, valueField : 'id', store : new Ext.data.SimpleStore({ data : [ [ '1', '合肥' ], [ '2', '芜湖' ], [ '3', '安庆' ], [ '4', '蚌埠' ] ], fields : [ 'id', 'text' ] }), editable : false,// 不允许输入 }); this.netmodel = new Ext.form.ComboBox({ id : 'netmodel', emptyText : "请选择...", isFormField : true, width : 130, mode : 'local', allowBlank : false,// 不允许为空 blankText : "不能为空",// forceSelection : true, triggerAction : 'all', fieldLabel : "网元交互模式", displayField : 'text', listWidth : 100, valueField : 'id', store : new Ext.data.SimpleStore({ data : [ [ '1', '合肥' ], [ '2', '芜湖' ], [ '3', '安庆' ], [ '4', '蚌埠' ] ], fields : [ 'id', 'text' ] }), editable : false,// 不允许输入 }); this.bmodel = new Ext.form.ComboBox({ id : 'bmodel', emptyText : "请选择...", isFormField : true, width : 130, mode : 'local', allowBlank : false,// 不允许为空 blankText : "不能为空",// forceSelection : true, triggerAction : 'all', fieldLabel : "部署模式", displayField : 'text', listWidth : 100, valueField : 'id', store : new Ext.data.SimpleStore({ data : [ [ '1', '合肥' ], [ '2', '芜湖' ], [ '3', '安庆' ], [ '4', '蚌埠' ] ], fields : [ 'id', 'text' ] }), editable : false,// 不允许输入 }); this.fieldSet = new Ext.form.FieldSet({ title : '网元协议配置', width : 1000, height : 150, style : 'margin: 10 0 5px 10px;', items : [ { xtype : 'panel', layout : 'column', style : 'margin: 10px 0px 0px 0px;', items : [ { columnWidth : .3, layout : 'form', labelWidth : 120, items : this.logiccode }, { columnWidth : .3, layout : 'form', labelWidth : 120, items : this.logicname }, { columnWidth : .3, layout : 'form', labelWidth : 120, items : this.logicdec } ] }, { xtype : 'panel', layout : 'column', style : 'margin: 0px 0px 0px 0px;', items : [ { columnWidth : .3, layout : 'form', labelWidth : 120, items : this.netproname }, { columnWidth : .3, layout : 'form', labelWidth : 120, items : this.netmodel }, { columnWidth : .3, layout : 'form', labelWidth : 120, items : this.bmodel } ] }, { xtype : 'panel', layout : 'column', items : [ { columnWidth : .5, layout : 'form', labelWidth : 120, style : 'margin: 0px 0px 0px 0px;', items : this.port }, { columnWidth : .5, layout : 'form', labelWidth : 120, style : 'margin: 0px 0px 0px 0px;', items : this.ip } ] } ] }); this.items = [ this.fieldSet ]; // this.items = [ // // // // this.netComition,this.alarmContent,this.neNameCode,this.suceess,this.commandbak,this.neNameClass,this.flag, // this.fault,this.falgs]; // }, loadData : function(o) { this.logiccode.setValue(o.data.logiccode); this.logicname.setValue(o.data.logicname); this.logicdec.setValue(o.data.logicdec); this.netproname.setValue(o.data.netproname); this.netmodel.setValue(o.data.netmodel); this.bmodel.setValue(o.data.bmodel); this.port.setValue(o.data.port); this.ip.setValue(o.data.ip); }, getData : function() { if (this.getForm().isValid()) { var logiccode = this.logiccode.getValue(); var logicname = this.logicname.getValue(); var logicdec = this.logicdec.getValue(); var netproname = this.netproname.getRawValue(); var netmodel = this.netmodel.getRawValue(); var bmodel = this.bmodel.getRawValue(); var port = this.port.getValue(); var ip = this.ip.getValue(); var o = { logicname : logicname, logicdec : logicdec, netproname : netproname, netmodel : netmodel, bmodel : bmodel, port : port, ip : ip }; return o; } else { Ext.Msg.alert("系统提示", "请完善相关信息"); return; } } }); </pre>   <p> </p>
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
MyBatis研习录(01)——MyBatis概述与入门
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis原本是apache的一个开源项目iBatis, 2010年该项目由apache software foundation 迁移到了google code并改名为MyBatis 。2013年11月MyBatis又迁移到Github。
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
Python爬虫精简步骤1 获取数据
爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。 爬虫能做很多事,能做商业分析,也能做生活助手,比如:分析北京近两年二手房成交均价是多少?广州的Python工程师平均薪资是多少?北京哪家餐厅粤菜最好吃?等等。 这是个人利用爬虫所做到的事情,而公司,同样可以利用爬虫来实现巨大的商业价值。比如你所熟悉的搜索引擎——百度和谷歌,它们的核心技术之一也是爬虫,而且是超级爬虫。 从搜索巨头到人工...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
web前端javascript+jquery知识点总结
1.Javascript 语法.用途 javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
渗透测试-灰鸽子远控木马
木马概述 灰鸽子( Huigezi),原本该软件适用于公司和家庭管理,其功能十分强大,不但能监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制。最终导致被黑客恶意使用。原作者的灰鸽子被定义为是一款集多种控制方式于一体的木马程序...
Python:爬取疫情每日数据
前言 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 以全国、湖北和上海为例,分别为以下三个网站: 国家卫健委官网:http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml 湖北卫健委官网:http://wjw.hubei.gov.cn/bmdt/ztzl/fkxxgzbdgrfyyq/xxfb...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允许使用这...
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧???? 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升自...
粒子群算法求解物流配送路线问题(python)
1.Matlab实现粒子群算法的程序代码:https://www.cnblogs.com/kexinxin/p/9858664.html matlab代码求解函数最优值:https://blog.csdn.net/zyqblog/article/details/80829043 讲解通俗易懂,有数学实例的博文:https://blog.csdn.net/daaikuaichuan/article/...
教你如何编写第一个简单的爬虫
很多人知道爬虫,也很想利用爬虫去爬取自己想要的数据,那么爬虫到底怎么用呢?今天就教大家编写一个简单的爬虫。 下面以爬取笔者的个人博客网站为例获取第一篇文章的标题名称,教大家学会一个简单的爬虫。 第一步:获取页面 #!/usr/bin/python # coding: utf-8 import requests #引入包requests link = "http://www.santostang....
前端JS初级面试题二 (。•ˇ‸ˇ•。)老铁们!快来瞧瞧自己都会了么
1. 传统事件绑定和符合W3C标准的事件绑定有什么区别? 传统事件绑定 &lt;div onclick=""&gt;123&lt;/div&gt; div1.onclick = function(){}; &lt;button onmouseover=""&gt;&lt;/button&gt; 注意: 如果给同一个元素绑定了两次或多次相同类型的事件,那么后面的绑定会覆盖前面的绑定 (不支持DOM事...
情人节来了,教你个用 Python 表白的技巧
作者:@明哥 公众号:Python编程时光 2020年,这个看起来如此浪漫的年份,你还是一个人吗? 难不成我还能是一条狗? 18年的时候,写过一篇介绍如何使用 Python 来表白的文章。 虽然创意和使用效果都不错,但有一缺点,这是那个exe文件,女神需要打开电脑,才有可能参与进来,进而被你成功"调戏”。 由于是很早期的文章了,应该有很多人没有看过。 没有看过的,你可以点击这里查看:用Pyt...
用Python开发实用程序 – 计算器
作者:隋顺意 一段时间前,自己制作了一个库 “sui-math”。这其实是math的翻版。做完后,python既然可以轻易的完成任何的数学计算,何不用python开发一个小程序专门用以计算呢? 现在我们越来越依赖于计算器,很多复杂的计算都离不开它。我们使用过各式各样的计算器,无论是电脑自带的,还是网也上的计算器,却都没有自己动手编写属于自己计算器。今天就让我们走进计算器的世界,用python来编写...
经典算法(19)教你两分钟学会【选择排序】
这篇博客使用图文并茂的方式讲解选择排序算法,并有完整的算法逻辑以及代码实现。
Python学习笔记(语法篇)
本篇博客大部分内容摘自埃里克·马瑟斯所著的《Python编程:从入门到实战》(入门类书籍),采用举例的方式进行知识点提要 关于Python学习书籍推荐文章 《学习Python必备的8本书》 Python语法特点: 通过缩进进行语句组织 不需要变量或参数的声明 冒号 1 变量和简单数据结构 1.1 变量命名 只能包含字母、数字和下划线,且不能以数字打头。 1.2 字符串 在Python中,用引号...
用Python打造你的专属情人节贺卡,赶快发给TA浪漫一下吧
明天就是情人节了。这个情人节,注定是一个不能约会的情人节,但不能约会不代表不能浪漫。古人比我们出生早,那些浪漫的诗词早都被他们挖掘一空,比诗词我们肯定没有机会了。好在我们还有Python,不然都不知道该如何表达浪漫。接下来,浪导教你制作一个浪漫的情人节专属贺卡。
Python绘图与可视化
文章目录使用的库Matplotlib程序包绘图命令的扩展及其属性设置 使用的库 Python有很多可视化工具,如:Matplotlib。 Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在Python脚本、IPython的交互环境下、Web应用程序中使用。如果结合使用一种GUI工具包(如IPython),Matplotlib还具有诸如缩放和平移等交互功能。它不仅支持各...
计算机考研经验总结
计算机考研指导建议背景开始备考时间学校选择复习计划学科复习考研资料和平台心得杂杂答疑 背景     我是广东双非本科计算机类专业,大一高数没学好,英语在大四最后一次考试里过了6级,专业课掌握情况尚好。选择报考暨南大学,因为它的专业课那年只考一门数据结构,而我数据结构学的还不错,不用在专业课上花很多的时间。暨南大学和华师是广东省内仅有的两所211高校,而听说华师学校稍老,环境没有暨大好。 开始备考时...
MySQL表的增删查改(提高篇)
MySQL表的增删查改(基本篇) 接上一篇MySQL表基本的增删查改,下面看一下提高篇: 一、数据库约束 1、约束类型 NOT NULL:不为空约束。创建表时,可以指定某列不为空 UNIQUE :唯一约束。指定某列为唯一的、不重复的 DEFAULT :默认值约束。指定插入数据时,某列为空,设置默认值 PRIMARY KEY : 主键约束。NOT NULL 和 UNIQUE 的结合。确保某列(或两个...
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问