Запрос относительно DatasourceId и DataSource
Там две таблицы
EmpInf
EmpId,
EmpName,
Salary,
DepartNumber.
Dept
DeptNo,
Deptname,
у меня есть linqdatasource control
такие как
<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>
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>
и попытался реализовать это listview
через динамические данные и использовали dynamic data manager control
<asp:DynamicDataManager ID="DynamicDataManager1" runat="server" >
<DataControls>
<asp:DataControlReference ControlID="ListView1" />
</DataControls>
</asp:DynamicDataManager>
я взял dropdownlist
, это связано с EmpInf.Empname
и когда я выбираю имя сотрудника в раскрывающемся списке, я хочу связать название отдела.
на заднем конце
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();
}
во время выполнения он выдает исключение, он показывает либо использование DataSourceID="LinqDataSource1" or use the datasource a the back end. remove one of them.
при этом ничего не возвращается во время процесса. как мне сделать этот пробег, нужно предложение. Спасибо за содействие.
2 ответа
Один из способов решить эту проблему - удалить DataSourceID из элемента управления ListView и связать данные в page_load.
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
//Bind datasource to ListView here
}
}
все должно работать сейчас
FilterControl.DataClasses1DataContext obj = new DataClasses1DataContext(); protected void DropDownList1_SelectedIndexChanged1(отправитель объекта, 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();
}
Это также можно решить, написав listview.DatasourceId=null
в приведенном выше коде