笔记0627

1,GridView模板的LinkButton传递多个参数

通过GridView模板的LinkButton的CommandArgument传递参数,传递一个参数是常用的,但是也可以传递多个参数

.aspx中的代码为:

<asp:TemplateField HeaderText="课程编号" SortExpression="课程编号">
                            <ItemTemplate>
                                <asp:LinkButton ID="LinkButtonCourseNO" runat="server" 
                                    Text='<%# Bind("课程编号") %>' CommandName="ButtonClick" 
                                    CommandArgument='<%# Eval("ID")+","+Eval("课程名称")+","+Eval("Approved")%>'></asp:LinkButton>
                            </ItemTemplate>
                        </asp:TemplateField>

.cs代码为:

    protected void GViewOutlineList_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if(e.CommandName == "ButtonClick")
        {
            //Response.Write(e.CommandArgument.ToString());
            object [] arguments = e.CommandArgument.ToString().Split(',');
            //Response.Write(arguments.Length.ToString());
            //int OutlineID = Convert.ToInt32(e.CommandArgument);
            Response.Redirect("a.aspx?OutlineID="+Convert.ToInt32(arguments[0])+"&CourseName="+arguments[1].ToString()+"&StateApproved="+Convert.ToInt32(arguments[2]));
        }
    }

??.aspx文件中如果用Bind()绑定数据,得到的arguments.Length就是1,得不到想要的结果,这个问题我还没弄明白,有知道的给我留言啊。

 

2,

借助于GridView控件的HyperLinkField数据行,我们便可以在GridView控件中替每一笔数据列显示出一个超级链接,并让用户轻易重新导向至特定的目标位置(特定网页或网页中的位置)。

 

在使用HyperLinkField数据行时,首先要考虑的就是超级链接上的文字。关于此点,可分为下列两种状况来说明:

 

q          如果您希望每一笔数据列的超级链接都显示相同的固定文字,请将HyperLinkField数据行的Text属性设定成所需的文字。图表1所示者即是一例。

 

 

图表1

 

q          如果您希望使用字段的内容作为每一笔数据列之超级链接的文字,请将HyperLinkField数据行的DataTextField属性设定成该字段。图表2所示者即是一例。

当然,最常与DataTextField属性搭配使用的不外乎就是DataTextFormatString属性。我们经常使用DataTextFormatString属性来格式化取自DataTextField属性所指定之字段的数据值。图表3所示者即是一例。

 

 

图表2

 

 

图表3

 

学会如何设定HyperLinkField数据行所产生之超级链接的文字之后,接下来就是学习设定超级链接的目标URL。如果您要让所有的超级链接都连结至相同的URL,请直接将NavigateUrl属性设定成所需的URL。这样的设定虽然最为单纯,但是却也非常不切实际,毕竟就算是连结至相同的网页,也会每一笔数据列连结至相同网页中的不同位置(也就是书签 - BookMark)。因此,较为实用的应该是DataNavigateUrlFields属性,原因很简单,它允许您指定某一个字段中的URL作为连结的目的地(请注意此属性的名称是以s结尾,这是有玄机的,稍后会加以说明)。以图表4所示者而言,表示以「网址」字段中的URL作为连结的目的地,如此一来,不同的超级链接将会拥有各自的URL。

 

图表4

 

当然,谈到了DataNavigateUrlFields属性,绝对不能忘了它的好兄弟 - DataNavigateUrlFormatString属性。DataNavigateUrlFormatString属性最主要的用途是用来格式化超级链接的URL。举例来说,假设您指派给DataNavigateUrlFields属性的字段并非内含完整的URL(例如:http://www.gotop.com.tw)而仅仅是内含网页档的名称(例如:AlexPage.aspx),此时如果希望超级链接的URL能够在网页档的名称前加上完整的位置路径的话,您可以采用以下的写法:

 

<asp:HyperLinkField DataNavigateUrlFields="个人网页"
                    DataNavigateUrlFormatString="~/Members/{0}"
                    HeaderText="个人网页" Text="检视个人网页" />

 

以上面的写法而言,表示以连结至根目录下之Members数据夹中的网页文件。又以下面的写法而言,则表示连结至一个绝对URL(也就是某网站)中之Members数据夹中的网页文件:

 

<asp:HyperLinkField 
 DataNavigateUrlFields="个人网页" 
 DataNavigateUrlFormatString="http://www.alexmember.com/Members/{0}" 
 HeaderText="个人网页" Text="检视个人网页" />

 

谈到这里,相信大家对HyperLinkField数据行都已经能够运用自如,现在呢,我们要再回头研究研究DataNavigateUrlFields属性,为什么它的名称要特别以s结尾呢?原因很简单,因为您可以指派一个以上的字段名称给DataNavigateUrlFields属性。什么时候需要这样做呢?举例来说,当每一个超级链接的URL都是要连结至相同的网页但是却要传递查询字符串给该网页(类似如下所示),以便让目标网页根据不同的参数值来进行不同的处理时,就有需要这样做:

 

MemberPage.aspx?Name=章立民&MemberLevel=A

 

欲使您的超级链接拥有类似如上的URL,就必须借助于DataNavigateUrlFields属性来构建之。这个时候,您必须将NameMemberLevel字段同时指派给DataNavigateUrlFields属性(NameMemberLevel字段必须以逗号分隔),并利用DataNavigateUrlFormatString属性来加以格式化即可。写法如下所示:

 

<asp:HyperLinkField 
 DataNavigateUrlFields="Name, MemberLevel" 
 DataNavigateUrlFormatString="MemberPage.aspx?Name={0}&MemberLevel={1}" 
 HeaderText="会员网页" Text="检视会员网页" />

3,

asp.net中在后台通过js弹出新窗口

 

<SCRIPT LANGUAGE="javascript"> 
<!-- 
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o, status=no') ;
--> 
</SCRIPT>


  参数解释:

  <SCRIPT LANGUAGE="javascript"> js脚本开始; 
  window.open 弹出新窗口的命令; 
  'page.html' 弹出窗口的文件名; 
  'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替; 
  height=100 窗口高度; 
  width=400 窗口宽度; 
  top=0 窗口距离屏幕上方的象素值; 
  left=0 窗口距离屏幕左侧的象素值; 
  toolbar=no 是否显示工具栏,yes为显示; 
  menubar,scrollbars 表示菜单栏和滚动栏。 
  resizable=no 是否允许改变窗口大小,yes为允许; 
  location=no 是否显示地址栏,yes为允许; 
  status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许; 
  </SCRIPT> js脚本结束


利用Response.Write将JavaScript写出


//关闭,父窗口弹出对话框,子窗口直接关闭
Response.Write("<script language=javascript>window.close();</script>");

//关闭,父窗口和子窗口都不弹出对话框,直接关闭
Response.Write("<script>");
Response.Write("{top.opener =null;top.close();}");
Response.Write("</script>");

//弹出窗口刷新当前页面width=200 height=200菜单。菜单栏,工具条,地址栏,状态栏全没有
Response.Write("<script language=javascript>window.open('rows.aspx','newwindow','width=200,height=200')</script>");

//弹出窗口刷新当前页面
Response.Write("<script language=javascript>window.open('rows.aspx')</script>");
Response.Write("<script>window.open('WebForm2.aspx','_blank');</script>");

//弹出提示窗口跳到webform2.aspx页(在一个IE窗口中)
Response.Write(" <script language=javascript>alert('注册成功'); window.window.location.href='WebForm2.aspx';</script> ");

//关闭当前子窗口,刷新父窗口
Response.Write("<script>window.opener.location.href=window.opener.location.href;window.close();</script>");
Response.Write("<script>window.opener.location.replace(window.opener.document.referrer);window.close();</script>");

//子窗口刷新父窗口
Response.Write("<script>window.opener.location.href=window.opener.location.href;</script>");
Response.Write("<script>window.opener.location.href='WebForm1.aspx';</script>");

//弹出提示窗口.确定后弹出子窗口(WebForm2.aspx)
Response.Write("<script language='javascript'>alert('发表成功!');window.open('WebForm2.aspx')</script>");

//弹出提示窗口,确定后,刷新父窗口
Response.Write("<script>alert('发表成功!');window.opener.location.href=window.opener.location.href;</script>");

//弹出相同的一页
<INPUT type="button" value="Button" οnclick="javascript:window.open(window.location.href)"> 
Response.Write("parent.mainFrameBottom.location.href='yourwebform.aspx?temp=" +str+"';");

例:

window.open('detail.aspx?ID="+e.Item.Cells[1].Text+"','newwin','width=750,height=600,scrollbars=yes,top=50,left=50');"); 
Response.Write("<Script>window.open('WebForm2.aspx','','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=750,height=470,left=80,top=40');</script>");

例:
Response.Write("<script>alert('发表成功!');window.opener.location.href=window.opener.location.href;</script>");
Response.Write("<script>");
Response.Write("{top.opener =null;top.close();}");
Response.Write("</script>");

例: linkcolumn1.DataNavigateUrlFormatString="javascript:varwin=window.open('edit_usr.aspx?actid={0}','newwin','width=750,height=600,scrollbars=yes,top=50,left=50');window.close()"

//服务器端传值弹出窗口,将B页面值传到A页面文本框上
//A页面的跳转 txtTBIN是asp:text控件
string url = "B.aspx?TBIN=" + txtTBIN.ClientID ;
        imgBIN.Attributes.Add("onclick", "window.open('" + url + "','xWindow','width=640,height=400,status=no,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=no,top=250,left=430')");

//B页面
//js
function ReturnDetail(BIN) 
{
                var _TBIN=document.all("txtTBIN").value; 
                var obj_TBIN= eval("window.opener.document.all('"+_TBIN+"')");    
                obj_TBIN.value= BIN;
                window.close();
}
//<%--隐藏的目标 --%>
<input id="txtTBIN" runat="server" name="txtFldFocus" type="hidden" />
//调用
<asp:Button ID="Button1" runat="server" Text="将文本框值传到A页面文本框" OnClientClick="javascript: ReturnDetail(document.all('txtBIN').value);"/>
//page_load 声明
//重要
string tbin = Request.Params["TBIN"] == null ? "" : Request.Params["TBIN"].ToString();
txtTBIN.Value = tbin;

 4,GridView相应模板列中的LinkButton按钮的事件(基本用法)

1 定义LinkButton时需要填写CommandName属性(用来找到这个按钮的标识),也可填写CommandArgument属性(这个属性可是其他列的值)。

<asp:GridView id="gv" runat="server" Width="100%" AutoGenerateColumns="False" PageSize="10" EmptyDataText="没有相关记录!" OnRowCommand="gv_RowCommad">
<asp:TemplateField> <ItemTemplate> <asp:LinkButton ID="lbtnNameDetail" runat="server" CommandName="open" CommandArgument='<%# Eval("ID") %>' Text='<%# Eval("Text") %>'> </asp:LinkButton> </ItemTemplate> </TemplateField>
</gridview>

2 在gridview的RowCommand事件中相应对LinkButton的点击

protected void gv1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
if (e.CommandName == "open") 
{ 
string ID= e.CommandArgument.ToString; 
//your code 
}

 

转载于:https://www.cnblogs.com/jonson1126/p/3158920.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值