如何在datagrid中通过鼠标点击选择一行
datagrid数据源有四列,分别是序号,姓名,科目,成绩,我想通过鼠标点击获取到某一行的序号,然后利用序号来操作删除和编辑等事件,我想写一个onclick的脚本事件,请问怎么写,我对javascript不是很熟悉,请教各位高手了
[解决办法]
帮你顶.赚点分.
[解决办法]
datagrid,你说的功能都是自带的,你自己把属性调好,再触发事件就可以了
[解决办法]
http://dev.csdn.net/develop/article/18/18315.shtm 参考一下
[解决办法]
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//鼠标移动到每项时颜色交替效果
e.Row.Attributes.Add( "OnMouseOut ", "out(this); ");
e.Row.Attributes.Add( "OnMouseOver ", "over(this,this.style.backgroundColor); ");
//双击 事件
e.Row.Attributes.Add( "OnDblClick ", "DbClickEvent(this, ' " + getDb(e.Row.RowIndex) + " ', ' " + e.Row.Cells[2].Text + " ', ' " + dqbm + " '); ");
//设置悬浮鼠标指针形状为 "小手 "
e.Row.Attributes[ "style "] = "Cursor:hand ";
e.Row.Attributes.Add( "onClick ", "ItemOver(this) ");
}
}
[解决办法]
你可以增加一个模板列 放Checkbox
<Columns>
...
<ItemTemplate>
<asp:CheckBox ID= "Check " runat= "server " />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox ID= "Check " runat= "server " />
</EditItemTemplate>
</asp:TemplateColumn>
...
</Columns>
再放编辑和删除的Button
[解决办法]
你可以增加一个模板列 放Checkbox
<Columns>
...
<ItemTemplate>
<asp:CheckBox ID= "Check " runat= "server " />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox ID= "Check " runat= "server " />
</EditItemTemplate>
</asp:TemplateColumn>
...
</Columns>
再放编辑和删除的Button,对选中的checkbox操作
[解决办法]
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
ListItemType itemtype = (ListItemType)e.Item.ItemType;
if((itemtype!=ListItemType.Header)&&(itemtype!=ListItemType.Footer)&&(itemtype!=ListItemType.Separator))
{
LinkButton oSelect = (LinkButton)e.Item.Cells[0].Controls[0];
e.Item.Attributes.Add( "OnClick ",Page.GetPostBackClientEvent(oSelect,String.Empty));
}
}
前提是在datagrid中加个隐藏的选择按钮列,记得放最前面,不然e.item.cells中的序号就要对应改了
[解决办法]
你可能会问如何后台取选中的Checkbox呢?
遍历DataGrid的数据项
for (int i = 0; i < 你的datagridID.Items.Count; i++)
{
chk = (CheckBox)你的datagridID.Items[i].Cells[0].Controls[1];
if (chk.Checked)
{
//具体业务操作
}
}
------解决方案--------------------
<script>
function aa(a)
{
alert(a);
}
</script>
if(e.rowType==DataControlRowType.DataRow)
{
string str=datagrid1.rows[datagrid.selectindex].cells[i].tostring();//i是你需要的列
e.Attribute.add( "Onclick ", "aa( '+str+ ') ");//可以弹出你所要的那一列的数据
}
[解决办法]
后台 代码
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Attributes.Add( "onmouseout ", "this.style.backgroundColor= 'White ' ");
e.Item.Attributes.Add( "onmouseover ", "this.style.backgroundColor= 'Gainsboro ' ");
e.Item.Style[ "cursor "] = "hand ";
ListItemType itemType = e.Item.ItemType;
if((itemType == ListItemType.Pager) || (itemType == ListItemType.Header) || (itemType == ListItemType.Footer))
{
return;
}
LinkButton button = (LinkButton)e.Item.Cells[8].Controls[0]; // 前台页面 LinkButton <asp:ButtonColumn Visible= "False " Text= "选择 " HeaderText= "选择 " CommandName= "select "> </asp:ButtonColumn>
e.Item.Attributes[ "onclick "] = Page.GetPostBackClientHyperlink(button, " ");
}
}
前台
<asp:DataGrid id= "dgd1 " runat= "server " Width= "100% " BorderWidth= "1px " CellPadding= "0 " AutoGenerateColumns= "False "
GridLines= "Horizontal " PageSize= "10 " ShowHeader= "true " CssClass= "text-h ">
<ItemStyle BackColor= "White "> </ItemStyle>
<SelectedItemStyle ForeColor= "Red "> </SelectedItemStyle>
<ItemStyle Height= "25px " HorizontalAlign= "Center "> </ItemStyle>
<HeaderStyle Height= "30px " BackColor= "#F8F7F7 " HorizontalAlign= "Center "> </HeaderStyle>
<Columns>
<asp:BoundColumn DataField= "id " Visible= "False "> </asp:BoundColumn>
<asp:BoundColumn DataField= "CustomersID " Visible= "False "> </asp:BoundColumn>
<asp:BoundColumn DataField= "Xftype " Visible= "False "> </asp:BoundColumn>
<asp:BoundColumn DataField= "ProjectSetID " Visible= "False "> </asp:BoundColumn>
<asp:TemplateColumn HeaderText= "序号 " ItemStyle-Width= "4% ">
<HeaderStyle CssClass= "title " BackColor= "#799AE1 "> </HeaderStyle>
<ItemTemplate>
<span>
<%# Container.ItemIndex+1 %>
</span>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField= "Cname " HeaderText= "顾客姓名 " ItemStyle-Width= "10% "> </asp:BoundColumn>
<asp:TemplateColumn HeaderText= "顾客类型 ">
<HeaderStyle Width= "10% " BackColor= "#799AE1 "> </HeaderStyle>
<ItemTemplate>
<%# Ctype(((DataRowView)Container.DataItem)[ "Xftype "].ToString()) %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField= "pname " HeaderText= "项目名称 " ItemStyle-Width= "10% "> </asp:BoundColumn>
<asp:ButtonColumn Visible= "False " Text= "选择 " HeaderText= "选择 " CommandName= "select "> </asp:ButtonColumn>
</Columns>
</asp:DataGrid>
[解决办法]
up
[解决办法]
帮顶~
[解决办法]
private void dg_UserInfo_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
//如果是数据项并且是交替项
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton TempLinkBtn = (LinkButton)e.Item.Cells[0].Controls[0];
e.Item.Attributes[ "onclick "] = Page.GetPostBackClientHyperlink(TempLinkBtn, " ");
//添加自定义属性,当鼠标移过来时设置该行的背景色为指定颜色,并保存原背景色
e.Item.Attributes.Add( "onmouseover ", "currentcolor=this.style.backgroundColor;this.style.backgroundColor= ' " + IRMComm.IRMComm_variable.strColor_dgItemDataBound + " ' ");
//添加自定义属性,当鼠标移走时还原该行的背景色
e.Item.Attributes.Add( "onmouseout ", "this.style.backgroundColor=currentcolor ");
}
}
private void dg_UserInfo_SelectedIndexChanged(object sender, System.EventArgs e)
{
labWrong.Text = " ";
BindData_dg_UserInfo();
}
//前台页面需带有:
<Columns>
<asp:ButtonColumn Visible= "False " Text= "选择 " CommandName= "Select ">
<HeaderStyle HorizontalAlign= "Center "> </HeaderStyle>
<ItemStyle HorizontalAlign= "Center "> </ItemStyle>
</asp:ButtonColumn>
[解决办法]
我也不是很熟悉
[解决办法]
帮顶