2
시나리오 : 목록보기 웹 파트에 표시된 항목/레코드를 선택한 필터를 기반으로 동일한 페이지에서 새로 고치거나 필터링해야합니다. 그래서 비주얼 웹 파트를 만들고 목록보기 웹 파트의 뷰를 프로그램 적으로 수정하려고했습니다. 지금까지 내가 여기까지 도달 :ListView 웹 파트를 필터링/업데이트하는 사용자 지정 필터 웹 파트
이string spListName = "Job";
protected void BtnSearchClick(object sender, EventArgs e)
{
try
{
SPWeb oWebsite = SPContext.Current.Web;
SPList oList = oWebsite.Lists[spListName];
XsltListViewWebPart xsltWP = null;
SPWebPartManager wpManager = WebPartManager.GetCurrentWebPartManager(Page) as SPWebPartManager;
//Code to Find List View Web Part on Page
foreach (System.Web.UI.WebControls.WebParts.WebPart wp in wpManager.WebParts)
{
if (wp.GetType().Name == "XsltListViewWebPart")
xsltWP = wp as XsltListViewWebPart;
}
oWebsite.AllowUnsafeUpdates = true;
StringBuilder strbPreQuery = new StringBuilder("<Where><Eq>");
StringBuilder strbPostQuery = new StringBuilder("</Value></Eq></Where>");
string strQueryKeyword = "<FieldRef Name='Customer' /><Value Type='Lookup'>";
SPQuery oQuery = new SPQuery();
oQuery.Query = strbPreQuery.ToString() + strQueryKeyword + txtCustomer.Text + strbPostQuery.ToString();
SPListItemCollection itemCol = oWebsite.Lists[spListName].GetItems(oQuery);
PropertyInfo pi = xsltWP.GetType().GetProperty("ContextView", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
SPView view = (SPView)(pi.GetValue(xsltWP, null));
view.Query = oQuery.Query;
view.Update();
wpManager.SaveChanges(xsltWP);
xsltWP.DataBind();
oWebsite.AllowUnsafeUpdates = false;
}
catch (Exception ex)
{
Response.Write(ex);
}
}
위의 코드는 작동하지만 지금 내가 직면하고 다음과 같은 문제 :
결과 그 갱신 내가 다음 코드를 추가하면 페이지가 너무를 새로 고칠 필요 결과가 업데이트되지만 시각적 웹 파트의 필터 값이 손실됩니다..
this.Context.Response.Redirect(this.Context.Request.Url.ToString());
은 다른 사용자에게 반사되어 하나의 사용자에 의해인가 여과 하였다.
내가 갖고있는이 두 가지 문제를 해결할 수있는 사람이 있습니까? 그게 내가 동시에
- 를 원하는 것입니다.
이 점에 대한 도움이 필요합니다.
답장을 보내 주셔서 감사합니다. 그러나 문제가 해결 되나요? 페이지 새로 고침이 필요한 기본보기의 변경 내용을 적용하려면 두 번째로는 여러 사용자가 공유하는보기 문제를 해결할 수 없습니다. –
페이지 새로 고침을 방지하려면 을 사용하십시오. Ex '입니다. <셰어 :의 ListView RUNAT = "서버"ID = "ID"/> ContentTemplate> ASP : UpdatePanel> ' view_unload에서 목록보기를 기본값으로 업데이트하기 때문에 공유보기의 문제가 해결됩니다. –
당신은 그것을 얻지 못한다 ....보기 updation의 효과는 변화를 표시하는 새로 고침이 필요합니다. –