0

私のDetailsViewは常に空白です。QueryBuilderで両方のデータソースをテストしましたが、それらは値を返します。GridView1のSelectedValueに設定されているPoweredEquipDetailsのパラメーター値の割り当てに問題があると思われますが、なぜ機能しないのかわかりません。

<body>
 <form id="form1" runat="server">
  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="PoweredEquipHeader" DataKeyNames="Model,Serial">
    <Columns>
        <asp:CommandField ShowSelectButton="True" />
        <asp:BoundField DataField="Model" HeaderText="Model" ReadOnly="True" 
            SortExpression="Model" />
        <asp:BoundField DataField="Serial" HeaderText="Serial" ReadOnly="True" 
            SortExpression="Serial" />
    </Columns>
    <SelectedRowStyle BackColor="#FF6600" />
  </asp:GridView>
  <asp:SqlDataSource ID="PoweredEquipHeader" runat="server" 
    ConnectionString="<%$ ConnectionStrings:CPECConnectionString %>" 
    SelectCommand="Select t1.Model, t1.Serial From Powered_Equip t1 Where TechID = @TechID And Store = @Store">
    <SelectParameters>
        <asp:QueryStringParameter DefaultValue="TECH01" Name="TechID" 
            QueryStringField="Tech" />
            <asp:QueryStringParameter DefaultValue="0000" Name="Store" 
            QueryStringField="Store" />
    </SelectParameters>
  </asp:SqlDataSource>
  <asp:SqlDataSource ID="PoweredEquipDetail" runat="server" 
    ConnectionString="<%$ ConnectionStrings:CPECConnectionString %>" 
    SelectCommand="SELECT t1.Serial, t1.Model, t1.Status, t1.[Trailer VIN], t2.Tag, t2.State, t2.ExpMonth, t2.ExpYear FROM Powered_Equip AS t1 INNER JOIN Trailers AS t2 ON t1.[Trailer VIN] = t2.VIN WHERE (t1.Serial = @Serial) AND (t1.Model = @Model)">
    <SelectParameters>
        <asp:ControlParameter ControlID="GridView1" Name="Serial" 
            PropertyName="SelectedValue" />
        <asp:ControlParameter ControlID="GridView1" Name="Model" 
            PropertyName="SelectedValue" />
    </SelectParameters>
</asp:SqlDataSource>
<asp:DetailsView ID="DetailsView1" runat="server"
    DataSourceID="PoweredEquipDetail" DataKeyNames="Serial,Model">
    <Fields>
        <asp:BoundField DataField="Serial" HeaderText="Serial" ReadOnly="True" 
            SortExpression="Serial" />
        <asp:BoundField DataField="Model" HeaderText="Model" 
            ReadOnly="True" SortExpression="Model" />
        <asp:BoundField DataField="Status" HeaderText="Status" ReadOnly="True" 
            SortExpression="Status" />
        <asp:BoundField DataField="Trailer VIN" HeaderText="Trailer VIN" ReadOnly="True" 
            SortExpression="Trailer VIN" />
        <asp:BoundField DataField="Tag" HeaderText="Tag" ReadOnly="True" 
            SortExpression="Tag" />
        <asp:BoundField DataField="State" HeaderText="State" ReadOnly="True" 
            SortExpression="State" />
        <asp:BoundField DataField="ExpMonth" HeaderText="ExpMonth" ReadOnly="True" 
            SortExpression="ExpMonth" />
        <asp:BoundField DataField="ExpYear" HeaderText="ExpYear" ReadOnly="True" 
            SortExpression="ExpYear" />
    </Fields>
</asp:DetailsView>
</form>

編集:つまり、DetailsViewパラメーター割り当てのGridViewのSelectedValueは、DataValueKeysで指定されているModelとSerialの両方ではなく、常にModelであると思います。機器アイテムに同じ値のモデルとシリアルがある場合(つまり、モデル118シリアル118)、DetailsViewにデータが入力されます。ただし、モデルとシリアルが異なる場合(ほとんどすべての場合)、DetailsViewは空白になります。では、2つの異なるSelectedValuesを取得して、2つの異なるControlParametersに値を割り当てるにはどうすればよいですか?

4

2 に答える 2

1

かわった

<SelectParameters>
    <asp:ControlParameter ControlID="GridView1" Name="Serial" 
        PropertyName="SelectedValue" />
    <asp:ControlParameter ControlID="GridView1" Name="Model" 
        PropertyName="SelectedValue" />
</SelectParameters>

<SelectParameters>
        <asp:ControlParameter ControlID="GridView1" Name="Serial" 
            PropertyName="SelectedDataKey.Values[Serial]" />
        <asp:ControlParameter ControlID="GridView1" Name="Model" 
            PropertyName="SelectedValue" />
    </SelectParameters>
于 2012-05-17T16:10:44.153 に答える
0
int n = int.Parse(GridView1.SelectedValue.ToString());
    TextBox4.Text = n.ToString();

    con = new SqlConnection(@"Data Source=LAB-III-136;Initial Catalog=student;Integrated Security=True");
    con.Open();
    da = new SqlDataAdapter("select * from student1 where id='" + TextBox4.Text  + " '", con);
    ds = new DataSet();
    da.Fill(ds, "temp");


    DetailsView2.DataSource = ds;
    DetailsView2.DataBind();
于 2013-11-23T07:37:25.850 に答える