<asp:datalist id="DataList1" style="Z-INDEX: 101; LEFT: 65px; POSITION: absolute; TOP: 31px" runat="server" BorderColor="#E7E7FF" BorderStyle="None" BackColor="White" CellPadding="3" GridLines="Horizontal" BorderWidth="1px">
<SelectedItemStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#738A9C"></SelectedItemStyle>
<SelectedItemTemplate>
<table bgcolor="#6699ff">
<tr>
<td>
<%#DataBinder.Eval(Container.DataItem,"CID")%>
</td>
        <td>
                            <%#DataBinder.Eval(Container.DataItem,"CompanyName")%>
                            </td>
          </tr>
</table>
<table>
<tr>
<td>
<asp:DataList id="DataList2" runat="server" DataSource='<%# GetOrder((string)DataBinder.Eval(Container.DataItem,"CompanyName"))%>' OnItemCommand="DataList2_ItemCommand">
<ItemTemplate>
<table>
<tr>
<td>
<asp:LinkButton ID="Lbtn2" Runat="server" CommandName="select">
<%#DataBinder.Eval(Container.DataItem,"OrderID")%>
</asp:LinkButton></td>
<td><%#DataBinder.Eval(Container.DataItem,"OrderDate")%></td>
<td><%#DataBinder.Eval(Container.DataItem,"ShippedDate")%></td>
</tr>
</table>
</ItemTemplate>
<SelectedItemTemplate>
<table>
<tr>
<td>
<%#DataBinder.Eval(Container.DataItem,"OrderID")%>
</td>
<td><%#DataBinder.Eval(Container.DataItem,"OrderDate")%></td>
<td><%#DataBinder.Eval(Container.DataItem,"ShippedDate")%></td>
<td>dfsdfsdfsdfdsdfsdf</td>
</tr>
</table>
<table>
<tr>
<td>
<asp:DataGrid ID="DataGrid1" Runat="server" DataSource='<%#GetDetails((int)DataBinder.Eval(Container.DataItem,"OrderID"))%>' AllowCustomPaging=True>
</asp:DataGrid></td>
</tr>
</table>
</SelectedItemTemplate>
</asp:DataList>
</td>
</tr>
         </table>
</SelectedItemTemplate>
<AlternatingItemStyle BackColor="#F7F7F7"></AlternatingItemStyle>
<ItemStyle ForeColor="#4A3C8C" BackColor="#E7E7FF"></ItemStyle>
<ItemTemplate>
<table>
<tr>
<td>
<asp:LinkButton ID="Lbtn1" Runat="server" CommandName="select">
<%#DataBinder.Eval(Container.DataItem,"CompanyName")%>
</asp:LinkButton></td>
<td>
<asp:Label ID="Lab" Runat=server text='<%#DataBinder.Eval(Container.DataItem,"CompanyName")%>' Visible=False/>
</td>
</tr>
</table>
</ItemTemplate>
<FooterStyle ForeColor="#4A3C8C" BackColor="#B5C7DE"></FooterStyle>
<HeaderStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#4A3C8C"></HeaderStyle>
</asp:datalist></form>
当按第一个datalist上的linkbutton时 可以显示第二个datalist 但是按第二个datalist上的linkbutton确无法显示第三个datalist(或datagrid) 我的问题就是为什么第一个的datalist的select命令有效 而第二个的没有 请高手帮我解决下难题

解决方案 »

  1.   

    cs的主要代码如下private void bind()
    {

    DataSet ds =new DataSet();

    this.sqlDataAdapter1.Fill(ds,"company");

    this.DataList1.DataSource=ds.Tables["company"].DefaultView;
    this.DataList1.DataBind();

    }public DataSet GetOrder(string a)
    {
    string command="select * from [Order] where CompanyID='"+a+"'";
    SqlDataAdapter da=new SqlDataAdapter(command,sqlConnection1);
    DataSet de=new DataSet();
    da.Fill(de);
    return de;


    }
    public DataSet GetDetails(int a)
    {
    string command="select * from OrderDetailsTable where OrderID="+a+"";
    SqlDataAdapter da=new SqlDataAdapter(command,sqlConnection1);
    DataSet de=new DataSet();
    da.Fill(de);
    return de;


    }private void DataList1_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
    ViewState["CompanyName"]=((Label)e.Item.FindControl("Lab")).Text;
    string cmd=((LinkButton)e.CommandSource).CommandName;
    if(cmd=="select")
    ((DataList)source).SelectedIndex=e.Item.ItemIndex;
    bind();

    }
    public void DataList2_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
    ViewState["OrderID"]=((LinkButton)e.Item.FindControl("Lbtn2")).Text;
    string bo=(string)ViewState["OrderID"];
    string cmd=((LinkButton)e.CommandSource).CommandName;
    DataList Sender = (DataList)source;
    if(cmd=="select")
                  Sender.SelectedIndex=e.Item.ItemIndex;
    Sender.DataSource=GetOrder((string)ViewState["CompanyName"]);
    Sender.DataBind();

    }