如何傳遞多個動態參數到子窗口,而主窗口不刷新

patricklee01 2003-12-09 11:25:45
我用下面的語句可以傳遞多個參數到子窗口,但主窗口一定要刷新,若主窗口不刷新我只能
傳靜態參數,請那位大蝦提供一下建議
Private Sub btnHDetail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHDetail.Click
If Not Page.IsStartupScriptRegistered("myscript") Then
Page.RegisterStartupScript("myscript","<script language=javascript> window.open('http://localhost/TAS/HolidayDetail.aspx?Empcode=" + txtEmpcode.Text + "&Year=" + txtYear.Text + "','請假明細', 'top=50,left=100,width=700,height=600,toolbar=0,location=0,directories=0,menubar=0,scrollbars=1,resizable=1,status=0')</script>")
End If
End Sub

因為btnHDetail是服務器控件,每次一點都會刷新主頁面,但我的txtEmpcode是動態參數,
要根據用戶點擊DataGrid的某行獲得對應的Empcode
...全文
55 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuzhonghe 2003-12-10
  • 打赏
  • 举报
回复
如果想要获取当前行某个单元的Text可用this.parentElement.cells(j).innerText 获取
liuzhonghe 2003-12-10
  • 打赏
  • 举报
回复
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
ArrayList al=new ArrayList();
al.Add("aa");
al.Add("bb");
al.Add("cc");
this.DataGrid1.DataSource=al;
this.DataGrid1.DataBind();
}

}
在datagrid 得事件中加上
private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
e.Item.Cells[0].Attributes.Add("onclick","window.open('http://localhost/TAS/HolidayDetail.aspx?Empcode=" + this.innerText+','請假明細', 'top=50,left=100,width=700,height=600,toolbar=0,location=0,directories=0,menubar=0,scrollbars=1,resizable=1,status=0')");
}
ZXYSOSO 2003-12-10
  • 打赏
  • 举报
回复
加个HTML按钮,把这些代码入在HTML按钮就行了,用客户端打开就不会有刷新的情况出现
window.open('http://localhost/TAS/HolidayDetail.aspx?Empcode=" + txtEmpcode.Text + "&Year=" + txtYear.Text + "','請假明細', 'top=50,left=100,width=700,height=600,toolbar=0,location=0,directories=0,menubar=0,scrollbars=1,resizable=1,status=0');
ZXYSOSO 2003-12-10
  • 打赏
  • 举报
回复
加个HTML按钮
加入window.showModalDialog('WebForm2.aspx?value=Empcode);
不就行了?
sunicom 2003-12-10
  • 打赏
  • 举报
回复
gz
patricklee01 2003-12-10
  • 打赏
  • 举报
回复
樓上說的我一直都是這樣做的,雙擊彈出窗口我知道怎麼做,
但我想用Button表示比較清楚,不想用雙擊,因為那些
主管都是電腦BC,你要他們雙擊他們會很不爽,
如果用客戶端的Button控件應該怎麼接收事件
长江支流 2003-12-09
  • 打赏
  • 举报
回复
用showModalDialog(),不用btnHDetail_Click服务器控件,用客户端脚本onclick
yxpmatrix 2003-12-09
  • 打赏
  • 举报
回复
同意 billwang188 的意见,我要做也这样,直接双击该行调出明细就完事拉,在绑定
datagrid 时 加上客户端代码就是,非常简单,何必再用 button.
zhenwang 2003-12-09
  • 打赏
  • 举报
回复
billwang188()的话有道理,在绑定数据源的时候也可以用已赋值的超链接的方式来打开子窗口, 同时给onclick事件加JS代码,让他打开窗口.不一定非要用服务端控件.
billwang188 2003-12-09
  • 打赏
  • 举报
回复
我觉得你用Page.RegisterStartupScript,本身就要求刷新才弹子窗口。为什么不在datagrid的数据binding时,对每一个btnHDetail(自定义模板的非服务器控件)的onclick的attribute加js呢?
patricklee01 2003-12-09
  • 打赏
  • 举报
回复
我的程序是主頁面放一個DataGrid,放員工信息,當然包括Empcode
現在就是要主管點一下該員工紀錄,然後按一下請假明細就彈出該員工的請假明細(子窗口)
點一下加班明細就彈出該員工的加班明細,現在功能已經都實現,但問題是每點一次
明細按鈕主頁面都要刷新,現在要求不能刷新應該怎麼作
ZXYSOSO 2003-12-09
  • 打赏
  • 举报
回复
再提供一段代码,你可以按照这样的思路改一下,就可以啦:
--datagrid整一行都链接上某页,选中行变色
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='#FFFFFF'") ;
e.Item.Attributes.Add("onmouseover", "this.style.backgroundColor='LightGoldenrodYellow'") ;

string ContractName = DataBinder.Eval(e.Item.DataItem, "au_id").ToString();
string ContractID = DataBinder.Eval(e.Item.DataItem, "title_id").ToString();
e.Item.Style["cursor"] = "hand";
e.Item.ToolTip = ContractName;
e.Item.ForeColor=Color.Blue;
e.Item.Attributes.Add("onclick","window.open('webform1.aspx?value="+ContractID+"','_blank','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,revisable=no,left=100,top=0,width=600,height=450');");
}
}
ZXYSOSO 2003-12-09
  • 打赏
  • 举报
回复
改在客户端打开子窗口,
这段代码是用Empcode字段变成超级连接

<ItemTemplate>
<a href="javascript:window.showModalDialog('WebForm2.aspx?value=<%# DataBinder.Eval(Container, "DataItem.Empcode") %>', window,'');">
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.title_id") %>'>
</asp:Label>
</a>
</ItemTemplate>
patricklee01 2003-12-09
  • 打赏
  • 举报
回复
up
patricklee01 2003-12-09
  • 打赏
  • 举报
回复
因為我們公司要求同一個頁面要放加班,請假,異常,支援很多資料,導致有
四五十列,根本就放不下Button列

其實不用Button也可以,可以用HyperLink,但我不知道怎麼傳動態參數,
HyperLink好像沒有事件可用

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧