在ASP.NET里用C# 如何双击GridView 某一行的任意一个位置 ,打开一个对应的界面
protected void gvCustom_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//设置弹出窗体
string CustomID= gvCustom.DataKeys[ e.Row.RowIndex][“CustomID“].ToString() ;
e.Row.Attributes.Add(“ondblclick“, “javascript:window.showModalDialog(‘./CustomInfo.aspx?CustomID=“ + CustomID + “‘,window,‘scroll:no;status:no;center:yes;dialogHeight:480px;dialogWidth:700px;‘);“);
}
}
用鼠标选中一行之后点击删除就删除一行,不要Gridview自带的!
你的表肯定有个ID的主键值吧,你的gridview要设定一下DataKeyNames=“ID“这个属性值,接下的事件就好多了,写个OnRowDeleting=“PublicGridRowDeleting“事件就可以了。
其实你不需要radiobutton的,一个按钮就可以取到ID值来了,我把所有代码贴出你看下!
<asp:GridView ID=“GridLog“ runat=“server“ AutoGenerateColumns=“False“ CellPadding=“4“ DataKeyNames=“ID“
BorderColor=“#333“ BorderStyle=“solid“ BorderWidth=“1“ OnRowDeleting=“PublicGridRowDeleting“
GridLines=“None“ Width=“98%“ ForeColor=“#333333“>
<FooterStyle BackColor=“#507CD1“ ForeColor=“White“ Font-Bold=“True“ />
<Columns>
<asp:BoundField DataField=“ID“ HeaderText=“ID“ InsertVisible=“false“ ReadOnly=“True“
SortExpression=“ID“ >
<ItemStyle HorizontalAlign=“Center“ Width=“20px“ />
</asp:BoundField>
<asp:TemplateField HeaderText=“删除“ ShowHeader=“False“>
<ItemStyle HorizontalAlign=“Center“ Width=“40px“ />
<ItemTemplate>
<asp:LinkButton ID=“LinkButton1“ runat=“server“ CausesValidation=“False“ CommandName=“Delete“ OnClientClick=“return confirm(‘您确认删除该规则‘);“ Text=“删除“></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<RowStyle BackColor=“#EFF3FB“ />
<SelectedRowStyle BackColor=“#D1DDF1“ Font-Bold=“True“ ForeColor=“#333333“ />
<PagerStyle BackColor=“#2461BF“ ForeColor=“White“ HorizontalAlign=“Center“ />
<HeaderStyle BackColor=“#5A799C“ ForeColor=“White“ Height=“22px“ />
<AlternatingRowStyle BackColor=“White“
写入如下代码:
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
((TextBox)GridView1.Rows[n].Cells[5].Controls[0]).ReadOnly = true;
}
点击第一行的时候可以编辑,但是点击其他行的时候,总是提示“指定的参数已超出有效值的范围”
请问这是为什么?应该如何解决?
GridView1.EditIndex = e.NewEditIndex;
GridView1.DataBind();//此时使GridView1变成编辑状态
((TextBox)GridView1.Rows[e.NewEditIndex].FindControl(“TextBox1“)).ReadOnly = true; //此时要使编辑状态下的TEXTBOX的控件为不可用状态,最好是使用FindControl.当然使用Rows[n].Cells[5].Controls[0]也可以,但是这个就要注意Controls的索引对应的控件是否是你需要的TEXTBOX.
下面代码可以增加一行,和删除表格指定行。
可以删除后继续增加却不行了。
请问是怎么回事?应如何修改一下让他可以继续增加呢?
谢谢。
<html>
<%jj=date()&time()%>
<input name=“nn“ type=“hidden“ value=“<%=jj%>“>
<script type=“text/javascript“>
var i=1;
function insRow()
{
var x=document.getElementById(‘myTable‘);
//get the prefer row
var beforeRow = x.rows(i-1);
//get the prefer cell
var beforeCell = beforeRow.cells(1);
//set the cell‘s element to do nothing
beforeCell.innerHTML=“<div align=center><input name=name“+(i-1)+“ type=text size=10 ></div>“;
var oneRow = x.insertRow(); //get one of row
//eight rows inserted
var h1=oneRow .insertCell(0);
var h2=oneRow .insertCell(1);
var h3=oneRow .insertCell(2);
var h4=oneRow .insertCell(3);
var h5=oneRow .insertCell(4);
var h6=oneRow .insertCell(5);
var h7=oneRow .insertCell(6);
var h8=oneRow .insertCell(7);
h1.innerHTML=“<div align=center>“+(i+1)+“<input name=no type=‘hidden‘ value=“+(i+1)+“></div>“;
h2.innerHTML=“<div...
出错原因:
行索引的保存不当。
修改方法:
修改insRow()的第三行
var beforeRow = x.rows(i-1);
-->
i = x.rows.length;
var beforeRow = x.rows(i-1);