0
LinqDataSource
을 사용하여 바인딩하는 GridView
이 있습니다. 나는 Session
에 저장되어있는 userid 값을 기반으로 GridView
을 필터링하려고합니다. 또한 사용자가 관리자인지 확인하기 위해 Session
이 있습니다.사용자 ID에 따라 필터 GridView가
- 사용자 만하면 - 모든 user_ids보기 - 관리하는 경우 필터
GridView
이 (열) == 세션 [ "용자 ID"] - USER_ID합니다.
나는 (관리자는 USER_ID = 1가) 사용자에 대한 여러 가지 방법으로 그것을 필터링 할 수 있지만 나중에 관리에 대한 모든 것을 표시하지 않도록하는 방법을 관리했습니다.
누군가 아이디어가 있습니까?
이<asp:GridView ID="GridView1" runat="server"
CausesValidation="False"
GridLines="None"
AllowPaging="True"
CssClass="mGrid"
PagerStyle-CssClass="pgr"
AlternatingRowStyle-CssClass="alt" AutoGenerateColumns="False"
DataSourceID="LinqDataSource2" DataKeyNames="event_id">
<AlternatingRowStyle CssClass="alt"></AlternatingRowStyle>
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:BoundField DataField="event_id" HeaderText="event_id" ReadOnly="True"
SortExpression="event_id" InsertVisible="False" />
<asp:BoundField DataField="title" HeaderText="title" SortExpression="title" />
<asp:BoundField DataField="description" HeaderText="description"
SortExpression="description" />
<asp:BoundField DataField="event_start" HeaderText="event_start"
SortExpression="event_start" />
<asp:BoundField DataField="event_end" HeaderText="event_end"
SortExpression="event_end" />
<asp:BoundField DataField="user_id" HeaderText="user_id"
SortExpression="user_id" />
</Columns>
<PagerStyle CssClass="pgr"></PagerStyle>
</asp:GridView>
<asp:LinqDataSource ID="LinqDataSource2" runat="server"
ContextTypeName="DataClassesDataContext" EntityTypeName=""
TableName="calevents" EnableDelete="True"
EnableInsert="True" EnableUpdate="True" Where="user_id = @user_id">
</asp:LinqDataSource>
내가 해봤 일 (수동 데이터 바인딩)의 일부 : 여기
내 영문 나를이 편집을 오버라이드 (override) 할 필요가 있습니다// Registered users may only edit their own events
DataClassesDataContext dc = new DataClassesDataContext();
var events = from a in dc.calevents
where a.user_id == userId()
select a;
GridView1.DataSource = events;
GridView1.DataBind();
또는 다음, 취소 메소드 업데이트.
// Registered users may only edit their own events
protected void GridView1_DataBound(object sender, EventArgs e)
{
if (Session["admin"] != "admin")
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
for (int j = 0; j < GridView1.Columns.Count; j++)
{
if (GridView1.Rows[i].Cells[j].Text != userId().ToString())
{
GridView1.Rows[i].Visible = false;
Label1.Text = GridView1.Rows.Count.ToString();
}
else
GridView1.Rows[i].Visible = true;
}
}
}
}
감사 1이 필터 rocord입니다 너 ... 내가 해결 : if (Session [ "admin"] == null) LinqDataSource2.Where = "user_id ="+ userId(); else LinqDataSource2.Where = "user_id = @user_id"; – Mix
누가 일 했니? 콩고. –