是这样的,我写了两个页面,一个是a.aspx,一个是b.aspx,其中a.aspx中有一个GridView1,里面的数据是从表a中获取的,表a的主键(流水号)是inspectionID。GridView中有一列是详细信息(表a中没有这个字段),点击每一条记录中的详细信息就跳转到b.aspx,也就是GridView1中的每一条记录都有一个详细信息,详细信息里是一个GridView2(存放详细信息的记录),GridView里用的是表b,b表有一个主键detalID,两个流水号,和其他的地段,两个流水号一个是detalID一个是inspectionID。之前我做的是将b.aspx以另外一个页面的形式连接过去的,部分代码截图如下:
a.aspx中的代码:<dx:GridViewDataColumn Caption="详细信息" VisibleIndex="7">
                        <Settings AllowAutoFilter="False" />
                        <EditFormSettings Visible="False" />
                        <DataItemTemplate>
                           <asp:LinkButton ID="lbtD" runat="server" 
                                CommandArgument='<%# Eval("inspectionID") %>' oncommand="lbtD_Command" >
                                详细...
                            </asp:LinkButton                        </DataItemTemplate>
</dx:GridViewDataColumn>a.aspx.cs中的代码:        protected void lbtD_Command(object sender, EventArgs e)
        {
            string inspectionID = ((LinkButton)sender).CommandArgument;
            Response.Redirect("~/View/Libr/LibrDetail.aspx?inspectionID=" + inspectionID);
        }
b.aspx.cs中的page_lode代码:        string inspectionID;
        protected void Page_Load(object sender, EventArgs e)
        {
                inspectionID = Request["inspectionID"];
                lineNum = Request["txtlineNo"];
                GetList();
        }
现在我想将b页面以弹窗口形式显示,部分代码和截图如下:
a.aspx中的代码:
<script language="javascript" type="text/javascript">
            function showDefect(inspectionID) {
                pcDefectDetail.SetSize(920, 500);
                pcDefectDetail.SetHeaderText('详细信息');
                pcDefectDetail.SetContentUrl('LibrDetail.aspx?inspectionID =' + inspectionID);
                pcDefectDetail.Show();
            }
</script><dx:GridViewDataColumn Caption="详细信息" VisibleIndex="7">
                        <Settings AllowAutoFilter="False" />
                        <EditFormSettings Visible="False" />
                        <DataItemTemplate>
                            <a href="javascript:void(0);"  onclick="showDefect(' <%# Eval("inspectionID") %>')">信息</a>
                        </DataItemTemplate>
</dx:GridViewDataColumn> <dx:ASPxPopupControl ID="pcDetail" runat="server" 
          ClientInstanceName="pcDefectDetail" ClientIDMode="AutoID"
          CssFilePath="~/App_Themes/Aqua/{0}/styles.css" CssPostfix="Aqua" SpriteCssFilePath="~/App_Themes/Aqua/{0}/sprite.css"
          AllowDragging="True" CloseAction="CloseButton" PopupHorizontalAlign="WindowCenter"
          Modal="True" Theme="Aqua" PopupAnimationType="None">
          <ClientSideEvents CloseUp="function(s, e) {
      gvP.PerformCallback();
}" />
        <ContentStyle VerticalAlign="Top">
            <Paddings PaddingBottom="5px" PaddingLeft="5px" PaddingRight="5px" PaddingTop="2px" />
        </ContentStyle>
        <ModalBackgroundStyle Opacity="10">
        </ModalBackgroundStyle>
        <ContentCollection>
            <dx:PopupControlContentControl ID="PopupControlContentControl2" runat="server" SupportsDisabledAttribute="True">
            </dx:PopupControlContentControl>
        </ContentCollection>
    </dx:ASPxPopupControl>b.aspx.cs中代码是这样的:        string inspectionID;
        protected void Page_Load(object sender, EventArgs e)
        {
                inspectionID = Request["inspectionID"];
                pipelineNum = Request["txtPipelineNo"];
                GetList();
        }
点击详细时提示“在位置 0 处没有任何行”,经过调试发现b.aspx.cs的这段代码从一开始就没有获取到值:        string inspectionID;
        protected void Page_Load(object sender, EventArgs e)
        {
                inspectionID = Request["inspectionID"];   //inspectionID是null
                pipelineNum = Request["txtPipelineNo"];
                GetList();
        }我想问一下在b.aspx.cs中如何获取inspectionID呢,这里用request请求ingpectionID是不行,哪位大神可以帮帮偶呀 ~~~~谢谢~~~~C#.

解决方案 »

  1.   

    用Cookie 吧 直接传参不方便,也不安全
      

  2.   

    既然你通过页面重定向到b.aspx,那么实际上调试时调用它,就根本不用什么a.aspx了。直接把url地址贴出来,或者贴到浏览器地址栏执行。先丢掉你的a.aspx,看看你自己调用b.aspx的url吧。
      

  3.   

    反之而言,假设你直接在浏览器地址栏打上url调用b.aspx,它“用request请求ingpectionID是可行”的,那么你就知道你花了大把时间自己纠结在根本没问题的地方了。总之,要想调试程序,需要稍微知道一点原理知识,并且自己想出调试方法。如果本来花20秒钟的调试工作,你需要花2天,这样搞开发岂不是很麻烦?你要学会如何自己动手调试,而csdn帮不了你的。
      

  4.   

    <a href="javascript:void(0);"  onclick="showDefect(' <%# Eval("inspectionID") %>')">信息</a>
    这个地方看看inspectionID是否有效,比如:
    <a href="javascript:void(0);"  onclick="showDefect(' <%# Eval("inspectionID") %>')">信息<%# Eval("inspectionID") %></a>
    看看什么结果
      

  5.   

    Mackz     是有效的    可以获取到~~~