programing

열(GridView)을 숨기면서 해당 값에 액세스하는 방법은 무엇입니까?

starjava 2023. 6. 21. 22:01
반응형

열(GridView)을 숨기면서 해당 값에 액세스하는 방법은 무엇입니까?

▁a가 있는 를 가지고 .DataSource(SQL 데이터베이스).열을 숨기려고 하지만 레코드를 선택할 때 값에 액세스할 수 있습니다.누가 이걸 어떻게 하는지 보여줄 수 있나요?

이 열은 숨기면서도 값에 액세스하려는 열입니다.

<asp:BoundField DataField="Outlook_ID" HeaderText="OutlookID" />

열( 재열을나산시숨위모다니도습것했을든해기기는)을 .Visible="false"), 하지만 그 값에 액세스할 수 없습니다.

<head runat="server">
<title>Accessing GridView Hidden Column value </title>
<style type="text/css">
  .hiddencol
  {
    display: none;
  }
</style>

<asp:BoundField HeaderText="Email ID" DataField="EmailId" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" >
</asp:BoundField>

ArrayList EmailList = new ArrayList();
foreach (GridViewRow itemrow in gvEmployeeDetails.Rows)
{
  EmailList.Add(itemrow.Cells[YourIndex].Text);
}

틀리지 , 내가틀않면다았지리,면,GridView에는 의값 보유않습다니의 값이 .BoundColumns이 속을가진인visible="false"이 할 수 두 일,는 (처럼) 가(V4Vendata답변설명)됨에다있수사니습용할기지는할두▁two를 사용하는 것입니다.Datakeys또는 변경할 수 있습니다.BoundColumnTemplateField 리고에서.ItemTemplate을 추다니합가컨▁like다▁a▁control.Label그것의 가시성을 거짓으로 만들고 그것에 당신의 가치를 줍니다.Label.

CSS로 스타일 정의:

.hiddencol { display: none; }

다음을 추가합니다.ItemStyle-CssClass="hiddencol" 리고그고.HeaderStyle-CssClass="hiddencol"그리드 필드에 대한 속성:

<asp:BoundField DataField="ID" HeaderText="ID" ItemStyle-CssClass="hiddencol"  HeaderStyle-CssClass="hiddencol" ClientIDMode="Static" />

데이터 키를 사용하여 해당 필드의 값을 검색할 수 있습니다. 왜냐하면 (말씀하신 대로) 표준을 설정했을 때BoundField눈에 보이는 거짓으로 값을 얻을 수 없습니다.

.aspx the 일세트파GridView

DataKeyNames = "Outlook_ID"

이제 이벤트 핸들러에서 다음과 같이 이 키의 값에 액세스할 수 있습니다.

grid.DataKeys[rowIndex]["Outlook_ID"]

그리드의 지정된 행 인덱스에 있는 ID를 제공합니다.

프로그래밍 방식으로 이 작업을 수행할 수 있습니다.

grid0.Columns[0].Visible = true;
grid0.DataSource = dt;
grid0.DataBind();
grid0.Columns[0].Visible = false;

이렇게 하면 데이터 바인딩 전에 열이 표시되도록 설정하여 열이 생성됩니다.열이 표시되지 않도록 설정하면 열이 표시되지 않습니다.

만약 당신이 가지고 있다면,TemplateField신의칼안럼의 열GridView그리고 당신은, 말하자면, blah라는 이름의 컨트롤이 그것에 묶여 있습니다.그런 다음 배치합니다.outlook_idHiddenField다음과 같이.

<asp:TemplateField HeaderText="OutlookID">
    <ItemTemplate>
        <asp:Label ID="blah" runat="server">Existing Control</asp:Label>
        <asp:HiddenField ID="HiddenOutlookID" runat="server" Value='<%#Eval("Outlook_ID") %>'/>
    </ItemTemplate>
</asp:TemplateField>

그럼 여러분이 .outlook_id그런 다음 컨트롤에 액세스합니다.
위해서RowDataBound다음과 같이 액세스:

string outlookid = ((HiddenField)e.Row.FindControl("HiddenOutlookID")).Value;

클릭한 행에 액세스하는 데 문제가 있으면 돌아가십시오.그리고 액세스하고 싶은 이벤트에 대해 언급하는 것을 잊지 마십시오.

은 열을 만수있다니습으로 수 .hidden서버 측면에서 그리고 어떤 이유로 이것은 그것을 하는 것과 다릅니다.aspx코드. 여전히 보이는 것처럼 참조할 수 있습니다.만에 됩니다.OnDataBound이벤트

protected void gvSearchResults_DataBound(object sender, EventArgs e)
{
    GridView gridView = (GridView)sender;

    if (gridView.HeaderRow != null && gridView.HeaderRow.Cells.Count > 0)
    {
        gridView.HeaderRow.Cells[UserIdColumnIndex].Visible = false;
    }

    foreach (GridViewRow row in gvSearchResults.Rows)
    {
        row.Cells[UserIdColumnIndex].Visible = false;
    }
}

다음을 채우기 전에 보이는 열을 남겨둡니다.GridView를 .GridView그런 다음 열을 숨깁니다.

음은숨겨진열값가방져다법니입오는을의에 숨겨진 열의 값을 얻는 .GridView 있어는으로 된 것Visible=False 합니다.SpecialInstructions바인딩된 GridView의 DataKeyNames 속성에 연결하고 이 방법으로 액세스합니다.

txtSpcInst.Text = GridView2.DataKeys(GridView2.SelectedIndex).Values("SpecialInstructions")

이상입니다. 매번 매우 단순하게 작동합니다.

나는 CSS나 Javascript 또는 jquery를 사용하여 클라이언트 측의 열을 숨기는 새로운 솔루션을 가지고 있습니다.

.col0
{
  display: none !important;
}

그리고 열을 추가하는 aspx 파일에서 CSS 속성을 지정해야 합니다.

<asp:BoundField HeaderText="Address Key" DataField="Address_Id" ItemStyle-CssClass="col0" HeaderStyle-CssClass="col0" > </asp:BoundField>

user496892와 유사한 방법을 사용했습니다.

SPBoundField hiddenField = new SPBoundField();
hiddenField.HeaderText = "Header";
hiddenField.DataField = "DataFieldName";
grid.Columns.Add(hiddenField);

grid.DataSource = myDataSource;
grid.DataBind();

hiddenField.Visible = false;

저는 이 솔루션, 우아한(IMO) 빠른 2파트너를 찾았습니다.

그리드 보기에서 일반적으로 열을 추가합니다. 다른 작업을 수행할 필요가 없습니다.

<asp:BoundField DataField="AccountHolderName" HeaderText="Account Holder" 
 ReadOnly="true"/>  

나중에 처리하는 데 유용한 경우 머리글 텍스트를 유지할 수 있습니다.

그리드의 행 데이터 바인딩 방법에서 해당 열 인덱스의 머리글, 바닥글 및 행을 숨깁니다.

if (e.Row.RowType == DataControlRowType.Header)
{
    e.Row.Cells[10].Visible = false;
}
if (e.Row.RowType == DataControlRowType.Footer)
{
    e.Row.Cells[10].Visible = false;
}
if (e.Row.RowType == DataControlRowType.DataRow)
{                                   
    e.Row.Cells[10].Visible = false;
}
 

코드는 뒤에서 하시면 됩니다.

Set visible= false데이터 바인딩 후 열에 대한. 그런 다음 그리드 보기에서 row_selection 함수의 가시성 "true"를 다시 수행할 수 있습니다.효과가 있을 거예요!

검색을 많이 했는데 운이 없었습니다.그들 중 대부분은 약간의 오류로 작업했습니다.마침내 나는 이 코드를 사용했고 그것은 나에게 효과가 있었습니다. 아마도 당신은 1을 다른 값으로 바꿔야 할 것입니다.나를 위해 나는 두 번째 콜을 숨길 것입니다.

protected voidFoundedDrGridView_RowDataBound(개체 보낸 사람, GridViewRowEventArges) {

    if(e.Row.RowType!=DataControlRowType.Pager)e.Row.Cells[1].Visible = false;
}

폭을 0으로 설정하면 됩니다.

columns.AddFor(m => m.Id).Name("hide-id").Width(0);

다음에서 일부 값에 액세스하고 싶을 때GridView전에GridView나타났어요.

  1. 나는 있습니다BoundField구속력이DataField정상적으로
  2. RowDataBound이벤트, 저는 그 이벤트에서 몇 가지 프로세스를 수행합니다.
  3. 전에GridView다음과 같은 글을 씁니다.

    protected void GridviewLecturer_PreRender(object sender, EventArgs e) 
    {
        GridviewLecturer.Columns[0].Visible = false;
    }
    

언급URL : https://stackoverflow.com/questions/5376278/how-to-hide-a-column-gridview-but-still-access-its-value

반응형