consulta sobre DatasourceId y DataSource

hay dos mesas

EmpInf
    EmpId,
    EmpName,
    Salary,
    DepartNumber.

Dept
    DeptNo,
    Deptname,

tengo un linqdatasource control como

<asp:LinqDataSource ID="LinqDataSource1" runat="server" EntityTypeName="" 
    ContextTypeName="FilterControl.DataClasses1DataContext" EnableDelete="True" 
    EnableInsert="True" EnableUpdate="True" OrderBy="DeptName"  
    TableName="Dept1s" Select="new (DeptNo, DeptName)">
</asp:LinqDataSource>

a listview

<asp:ListView ID="ListView1" runat="server" DataSourceID="LinqDataSource1"
   style="z-index: 1; left: 10px; top: 34px; position: absolute; height: 63px; width: 293px" 
    >
    <AlternatingItemTemplate>
        <tr style="">
            <td>
                <asp:DynamicControl runat="server" DataField="DeptNo" Mode="ReadOnly" />
            </td>
            <td>
                <asp:DynamicControl runat="server" DataField="DeptName" Mode="ReadOnly" />
            </td>
        </tr>
    </AlternatingItemTemplate>
    <EditItemTemplate>
        <tr style="">
            <td>
                <asp:Button ID="UpdateButton" runat="server" CommandName="Update" 
                    Text="Update" />
                <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
                    Text="Cancel" />
            </td>
            <td>
                <asp:DynamicControl runat="server" DataField="DeptNo" Mode="Edit" />
            </td>
            <td>
                <asp:DynamicControl runat="server" DataField="DeptName" Mode="Edit" />
            </td>
        </tr>
    </EditItemTemplate>
    <EmptyDataTemplate>
        <table runat="server" style="">
            <tr>
                <td>
                    No data was returned.</td>
            </tr>
        </table>
    </EmptyDataTemplate>
    <InsertItemTemplate>
        <tr style="">
            <td>
                <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" 
                    ValidationGroup="Insert" />
                <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" 
                    Text="Clear" />
            </td>
            <td>
                <asp:DynamicControl runat="server" DataField="DeptNo" Mode="Insert" 
                    ValidationGroup="Insert" />
            </td>
            <td>
                <asp:DynamicControl runat="server" DataField="DeptName" Mode="Insert" 
                    ValidationGroup="Insert" />
            </td>
        </tr>
    </InsertItemTemplate>
    <ItemTemplate>
        <tr style="">
            <td>
                <asp:DynamicControl runat="server" DataField="DeptNo" Mode="ReadOnly" />
            </td>
            <td>
                <asp:DynamicControl runat="server" DataField="DeptName" Mode="ReadOnly" />
            </td>
        </tr>
    </ItemTemplate>

y traté de implementar esto listview a través de datos dinámicos y utilizó un dynamic data manager control

<asp:DynamicDataManager ID="DynamicDataManager1" runat="server" >
<DataControls>
<asp:DataControlReference ControlID="ListView1" />
</DataControls>
</asp:DynamicDataManager>

he tomado un dropdownlist, está obligado a EmpInf.Empname y cuando selecciono el nombre particular del empleado de una lista desplegable, quiero vincular el nombre del departamento.

en la parte de atrás

FilterControl.DataClasses1DataContext obj = new DataClasses1DataContext();
        protected void DropDownList1_SelectedIndexChanged1(object sender, EventArgs e)
        {



            var a = from r in obj.EmpInfs
                    join s in obj.Dept1s on r.DeptNumber equals s.DeptNo 
                    where r.EmpName ==  DropDownList1.SelectedValue  
                    select s.DeptName;



            ListView1.DataSource = a;
            ListView1.DataBind();



        }

durante un tiempo de ejecución, lanza una excepción, muestra el uso DataSourceID="LinqDataSource1" or use the datasource a the back end. remove one of them. al hacerlo, no se devuelve nada durante el proceso. ¿Cómo debo hacer que esto funcione? Necesito una sugerencia. gracias por la ayuda

preguntado el 04 de julio de 12 a las 10:07

Si algo no se entiende. Por favor hagamelo saber. -

2 Respuestas

Una forma de resolver eso es eliminar el DataSourceID del control ListView y vincular los datos en page_load

protected void Page_Load(object sender, EventArgs e)
{

   if(!Page.IsPostBack)
   {
      //Bind datasource to ListView here
   }
}

todo debería funcionar ahora

Respondido 04 Jul 12, 11:07

FilterControl.DataClasses1DataContext obj = new DataClasses1DataContext(); Vacío protegido DropDownList1_SelectedIndexChanged1 (remitente del objeto, EventArgs e) {

        var a = from r in obj.EmpInfs
                join s in obj.Dept1s on r.DeptNumber equals s.DeptNo 
                where r.EmpName ==  DropDownList1.SelectedValue  
                select s;


        listview1.DatasourceId=null;
        ListView1.DataSource = a;
        ListView1.DataBind();



    }

También se puede resolver escribiendo listview.DatasourceId=null en el código anterior

Respondido 04 Jul 12, 12:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.